Pandas模块

课堂练习:

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

1 array([
2    [ 80.5, 60., 40.1, 20., 90.7],
3    [ 10.5, 30., 50.4, 70.3, 90.],
4    [ 35.2, 35., 39.8, 39., 31.],
5    [91.2, 83.4, 85.6, 67.8, 99.]
6   ])

# 每一行均值

1 for i in res:
2     print('每一行>>>:',i)
3     print('均值>>>:',np.average(i))

# 每一列均值

1 for i in range(res.shape[1]):
2     print('每一列>>>:',res[:,i])
3     print('最小值>>>:',np.min(res[:,i]))

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

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

Pandas模块简介:

基于Numpy构建
pandas的出现,让Python语言成为使用最广泛而且最强大的数据分析语言
pandas针对表格文件的操作有非常大的优势
  尤其是数据量超过10万的


pandas的主要功能
  - 具备诸多功能的两大数据结构
  Series、DataFrame
  都是基于Numpy构建出来的
    公司中使用频繁的是DataFrame,而Series是构成DataFrame的基础,即一个DataFrame可能由N个Series构成
  - 集成时间序列功能
  - 提供丰富的数学运算和操作(基于Numpy)
  - 灵活处理缺失数据

# python纯开发环境下
pip3 install pandas
# anaconda环境下
conda install pandas
'''anaconda已经自动帮助我们下载好了数据分析相关的模块,其实无需我们再下载'''

# 导入
import pandas
import pandas as pd # 更加习惯给它起一个别名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']    # 以行标签取值

相关文章

转载:一文讲述Pandas库的数据读取、数据获取、数据拼接、数...
Pandas是一个开源的第三方Python库,从Numpy和Matplotlib的基...
整体流程登录天池在线编程环境导入pandas和xrld操作EXCEL文件...
 一、numpy小结             二、pandas2.1为...
1、时间偏移DateOffset对象DateOffset类似于时间差Timedelta...
1、pandas内置样式空值高亮highlight_null最大最小值高亮背景...