认识pandas模块

Numpy小测验

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

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.median(i))

# 每一列中位数
for i in range(res.shape[1]):
    print('每一列>>>:',res[:,i])
    print('中位数>>>:',np.median(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模块介绍

1.基于Numpy构建

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

pandas针对表格文件的操作有非常大的优势(尤其是数据量超过10万行的)

2.pandas的主要功能

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

Series、DataFrame都是基于Numpy构建出来的

公司中使用频繁的是DataFrame,而Series是构成DataFrame的基础,即一个DataFrame可能由N个Series构成

- 集成时间序列功能

- 提供丰富的数学运算和操作(基于Numpy)

- 灵活处理缺失数据

3.模块下载

* python纯开发环境下

pip3 install pandas

* anaconda环境下

conda install pandas

但是anaconda其实内部已经帮我们自动下好数据分析相关的模块,不需要我们手动下载

4.导入模块

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

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

eg:

import numpy as np
import pandas as pd

数据类型之Series

是一种类似于一维数组对象,有数据和相关的标签(索引)组成

eg:

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() # 过滤条值为空的行

fillna()   # 填充缺失数据 

isnull()  # 返回布尔数组  

notnull() # 返回布尔数组

数据修改规则

思考:如何判断当前数据是否改变呢?

总结的规律:

1.如果执行操作之后有结果说明原数据没有变
    obj1.fillna(123)

2.如果执行操作之后没有结果说明元数据改变
    obj1.fillna(123,inplace=True)

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

布尔值索引

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

eg:

mask = pd.Series([True,False,False,True,False])
price = pd.Series([321312,123,324,5654,645])

1.price[mask] # 从price里取对应True的数据

2.price | mask    # | 表示或的意思

3.(price>200) & (price<900)  # & 表示且的意思

行索引/行标签

sr1.iloc[0]  # 以行索引取值

sr1.loc['a'] # 以行标签取值

***只需要记住索引用这两种方法取就不会出现系统混乱的现象

 

posted @ 2021-10-14 15:16  lovewx35  阅读(58)  评论(0)    收藏  举报