pandas模块

numpy小练习

1.计算数组每一行和每一列的中位数(不能使用axis参数)

import numpy as np
    res =np.array([
       [ 80.5, 60., 40.1, 20., 90.7],
       [ 10.5, 30., 50.4, 70.3, 90.],
       [ 35.2, 35., 39.8, 39., 31.],
       [91.2, 83.4, 85.6, 67.8, 99.]
    ])
    
    # 每一行均值
    for i in res:
        print('每一行>>>:',i)
        print('均值>>>:',np.average(i))
    # 每一列均值
    for i in range(res.shape[1]):
        print('每一列>>>:',res[:,i])
        print('最小值>>>:',np.min(res[:,i]))

2.jason有10000块钱,去某赌场嗨皮
假设输赢概率都是50%,并且赢一场赚100,输一场亏100
jason总共玩了1500场,写程序计算1500场之后jason还剩多少钱

    """统计jason每一次赌完后账户总额"""
    # 先定义一个变量存储jason的本金
    money = 10000
    # 再定义一个存储每次赌局之后账户金额的变量
    package = []
    # 先将jason初始的本金添加进来
    package.append(money)
    # 利用for循环模拟1500次赌局
    for i in range(1500):
        # 先判断输赢
        is_right = np.random.choice([1,0])  # 1表示赢 0表示输
        # 判断赢则账户加100
        if is_right:
            money += 100
        # 判断输则账户减100
        else:
            money -= 100
        # 每次循环结束之后都将结构添加到列表中
        package.append(money)
    # 循环结束即1500场完成
    # print(money)
    # print('记录',package)
    # 可视化作图(后期会讲)
    import matplotlib.pyplot as plt
    plt.plot(range(1501),package)  # x轴与y轴坐标数据
    plt.show()

pandas模块简介

基于numpy构建

pandas的出现,让Python语言成为使用最广泛而且最强大的数据分析语言

pandas针对表格文件的操作有非常大的优势

  尤其是数据量超过10万的

 

pandas的主要功能

  1.具备诸多功能的两大数据结构

    series,dataframe

    都是基于numpy构建出来的

      公司中使用频繁的是dataframe,而series是构成dataframe的基础,即一个dataframe可能由n个series构成

  2.集成时间序列功能

  3.提供丰富的数学运算和操作(基于numpy)

  4.灵活处理缺失数据

 

python纯开发条件下

  pip3 install pandas

anaconda环境下

  canda install pandas

(anaconda已经自动帮助我们下载好了数据分析相关的模块,其实无需我们再下载)

 

导入

import pandas
import pandas as pd  #更加习惯给它起一个别名

补充

数据分析三剑客模块由于使用频率很高,所以在很多ipynb文件的开头都会提前导入

import numpy as np
import pandas as pd

数据类型之series

  是一种类似于一堆数组对象,由数据很相关的标签(索引)组成

第一种:

pd.series([4,5,6,7,8])

第二种:

pd.series([4,5,6,7,8],index=['a','b','c','d','e'])

第三种:

pd.Series({"a":1,"b":2})

第四种:

pd.Series(0,index=['a','b','c'])

缺失数据概念

在数据处理中如果遇到NaN关键字那么意思就是缺失数据

并且NaN属于浮点型

dropna()  # 过滤掉值为NaN的行
fillna()  # 填充缺失数据
isnull()  # 返回布尔数组
notnull()  # 返回布尔数组

数据修改规则

 如何判断当前数据是否改变

  1.如果执行操作之后有结果说明原数据没有变

obj1.fillna(666)

  2.如果执行操作之后没有结果说明原数据改变

obj1.fillna(666,inplace=True)

inplace = True该参数很多方法都有,意思就是直接改变原数据

布尔值索引

布尔值索引的本质就是按照对应关系筛选出True对应的数据

mask = pd.Series([True,False,False,True,False])
price = pd.Series([321312,123,324,5654,645])
price[mask]
price|mask
(price>200) & (price<900)
price[(price>200) & (price<900)]  # 布尔求值

针对&符号衔接的条件都必须要加括号

行索引/行标签

设置数字行标签的时候,有时候会与自带的行索引冲突报错

这时就需要加一条代码说明自己使用的是行索引还是行标签

 

sr1.iloc[0]  # 以行索引取值
sr1.loc['a']   # 以行标签取值

 

posted @ 2021-10-14 21:27  雾雨黑白  阅读(36)  评论(0编辑  收藏  举报