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.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的主要功能

具备诸多功能的两大结构 Series、DataFrame都是基于numpy构建出来的

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

Series构成

集成时间序列功能

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

灵活处理缺失数据

 

python纯开发环境下

pip3 install pandas

anaconda环境下

conda 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 20:27  ふじわらたくみ  阅读(66)  评论(0)    收藏  举报