python数据清洗学习笔记–数据统计
1、数据分组运算
分组计算根据某个或者某几个字段对数据集进行分组,然后运用特定 的函数,得到结果
• 使用groupby方法进行分组计算,得到分组对象GroupBy
• 语法为df.groupby(by=)
• 分组对象GroupBy可以运用描述性统计方法, 如count、mean 、
median 、 max和min等
# 对一个变量进行分组
Group = loan_info.groupby(by ='product’)
#对多个变量进行分组
group1= loan_info.groupby(by =['product','jgmc’])
Group.mean()
Group.sum()
Group.max()
2、聚合函数的使用
• 对分组对象使用agg聚合函数
• Groupby.agg(func)
• 针对不同的变量使用不同的统计方法
#对分组后对象,计算均值和最值等
grouped.agg([np.mean,np.max]).head(20)
#对2个变量分别计算不同的统计量
grouped.agg({'ye':np.mean,'dkje':np.max})
#也可以直接对数据进行汇总
loan_info[['dkje','ye','yqje']].agg([np.sum,np.mean])
3、分组对象与apply函数
• 函数apply即可用于分组对象,也可以作用于dataframe数据
• Groupby.apply(func)
• 需要注意axis=0和axis=1的区别
#相当于计算每列的均值
loan_info.apply(np.sum,axis = 0)
# 相当于计算每行的总和
loan_info['sum'] =loan_info.apply(np.sum,axis=1)
#计算两个变量 的差值
loan_info[[‘dkje’,‘ye’]].apply(lambda x:x[0] - x[1],axis = 1)
4、透视图与交叉表
在数据分析中,数据透视表是常见的工具之一,需要根据行或列对数据 进行各个维度数据的汇总,在pandas中,提供了相关函数解决此类问题 ,交叉表更多用于频数的分析
数据透视表
pivot_table( data, index,columns,values, aggfunc, fill_value, margins, margins_name=’’ )
Index : 行分组键
columns: 列分组键
values: 分组的字段,只能为数值型变量
aggfunc: 聚合函数
margins: 是否需要总计
margins_name: 总计名称
fill_value: 设置缺失值
pd.pivot_table(data=df,index='Year',values='Global_Sales',aggfunc=np.mean,margins=True,margins_name='总计’)
pd.crosstab(index = df['Platform'],columns=df['Genre'],margins=True)
交叉表用于计算分组频率
pd.crosstab(index,columns,normalize)
Index: 行索引
Columns: 列索引
Normalize: 数据对数据进行标准化,index表示行,column表示列
pd.pivot_table(data=df,index='Year',values='Global_Sales',aggfunc=np.mean,margins=True,margin s_name='总计’)
pd.crosstab(index = df['Platform'],columns=df['Genre'],margins=True)
记录自:python数据清洗实战—Peter老师