一、pandas数据操作:
1.处理缺失数据
(1)判断是否存在缺失值
ser_obj.isnull(),df_obj.isnull()
(2)dropna:丢弃缺失数据
(3)fillna:填充缺失值
2.常用的统计计算
import numpy as np import pandas as pd df1 =pd.DataFrame(np.random.randn(5,4),columns=['a','b','c','d']) print(df1)
(1)sum,mean,max,min.......
(2)axis=0按照列统计,axis=0按照行进行统计
#求和,求出各列的最大值,默认是axis=的方向 print('df1.sum= ',df1.sum()) #打印出df1的最大值,求出df1各列的最大值 print('df1.max()= ',df1.max())
求出水平方向各列的最大值
print('水平方向的最大值= ',df1.max(axis=1))
#求出水平方向各行的和
print('水平方向各行的和',df1.sum(axis=1))
print('各个值的描述为: ',df1.describe())
(3)skipna排除缺失值,默认为True
(4)idmax,idmin,cumsum
(5)describe()描述多个数据
二、pandas层级索引
1.层级索引
(1)MultiIndex对象
import numpy as np import pandas as pd #对于多层索引的数据结构,先写外层索引,再写内层索引 ser_obj = pd.Series(np.random.randn(12),index=[['a','a','a','b','b','b','c','c','c','d','d','d'], [0,1,2,0,1,2,0,1,2,0,1,2] ]) print(ser_obj)
a 0 -0.238233
1 1.833810
2 0.440786
b 0 -0.061261
1 1.429524
2 0.472883
c 0 -0.509399
1 1.463129
(2)选取子集
外层选取 ser_obj['outer_label']
内层选取 ser_obj[:,'inner_label']
#索引 print('索引为',ser_obj.index) print('索引的类型: ',type(ser_obj))
索引为 MultiIndex(levels=[['a', 'b', 'c', 'd'], [0, 1, 2]],
labels=[[0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3], [0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2]])
索引的类型:
<class 'pandas.core.series.Series'>
#外层的选取,选取c这一层
print(ser_obj['c'])
#内层的选取
print(ser_obj[:,2])
(3)常用于分组操作透视表生成等
(4)交换分层次序
swaplevel
#交换层级索引的顺序,将0,1,2作为外层索引,将a,b,c,d作为内层索引 print(ser_obj.swaplevel())
0 a -0.692477
1 a 1.646162
2 a -1.065838
0 b -0.427297
1 b 3.000122
2 b -0.247474
0 c -0.601376
1 c -0.109477
2 c -0.607528
0 d 0.776865
1 d 0.886385
2 d -0.837686
#交换层级索引并排序分层
print(ser_obj.swaplevel().sortlevel())
(5)排序分层:sortlevel()
#交换层级索引并排序分层
print(ser_obj.swaplevel().sortlevel())
三、Pandas分组与聚合
1.分组(groupby)
(1)对数据集进行分组,然后对每组数据进行统计分析
(2)SQL能够对数据进行过滤,分组聚合
(3)pandas能够利用groupby进行更加复杂的分组运算
(4)分组运算的过程
split->apply->combine
拆分:进行分组的根据
应用:每个分组的计算规则
合并:把每个分组的计算结果合并起来
2.聚合(aggregation)
(1)数组产生标量的过程,如mean(),count()等
(2)常用于对分组后的数据进行计算
(3)内置的聚合函数
sum(),mean(),max(),min(),count(),size(),describe()
(4)可以自定义函数,传入agg方法中
grouped.agg(func)
(5)func的参数为groupby索引对应的记录