失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > Python数据分析补充:数据的分组与汇总(数据透视)

Python数据分析补充:数据的分组与汇总(数据透视)

时间:2021-05-12 23:10:00

相关推荐

Python数据分析补充:数据的分组与汇总(数据透视)

数据汇总是指基于已有的明细数据做进一步的统计计算,这是数据分析过程中必备的基础知识,也是学习或工作中经常使用到的知识点,类似于Excel中透视表说完成的数据汇总以及数据库中实现的分组聚合。

Pandas模块既提供了Excel透视表的功能,也提供了数据库中的分组聚合功能。

一、透视表功能

该功能的主要目的就是实现数据的汇总统计,例如按照某个分组变量统计商品的平均价格、销售数量、最大利润等,或者按照某两个分组变量构成统计学中的列联表(计数统计),甚至基于多个分组变量统计各组合下的均值、中位数、总和等。

Pandas模块中的pivot_table函数就是实现透视表功能的强大函数,该函数简单易用,与Excel操作思想完全一致。

pd.pivot_table(data,values=None,index=None,columns=None,aggfunc='mean',fill_value=None,margins=False,dropna=True,margins_name='All')

pivot_table函数的参数说明如下:

data:指定需要构造透视表的数据集values:指定需要拉入“数值”框的变量列表index:指定需要拉入“行标签”框的变量列表columns:指定需要拉入“列标签”框的变量列表aggfunc:指定数组的统计函数,默认为统计均值,也可以指定numpy模块中的其他统计函数(numpy是Python中一个专门用于角数值运算的模块)fill_value:指定一个标量,用于填充缺失值margins:bool类型参数,是否需要显示行或列的总计值,默认为Falsedropna:bool类型参数,是否需要删除整列为缺失的变量,默认为Falsemargins_name:指定行或列的踪迹名称,默认为All

以下列数据来看看单个分组变量的均值统计:

import pandas as pd path = r'C:\Users\lin-a\Desktop\【数据分析从入门到进阶】配套数据\第5章\datas\diamonds.csv'diamonds = pd.read_table(path,sep=',')diamonds

53940 rows × 10 columns

# 数据透视,均值pd.pivot_table(diamonds,index='color',values='price',margins=True,margins_name='总计')

结果显示,基于变量color的汇总统计(price的均值),返回结果属于Pandas模块的序列类型,该结果与Excel形成的数据透视表完全一致。

import numpy as np# 两个变量的结果pd.pivot_table(data=diamonds,index='clarity',columns='cut',values='carat',aggfunc=np.size,margins=True,margins_name='总计')

对于列联表来说,行和列都需要指定某个分组变量,所以index参数和columns参数都需要指定一个分组变量,并且统计的不再是某个变量的均值,而是观测个数,所以aggfunc参数需要指定numpy模块的size行数。通过这样的参数设置,返回的是一个数据框对象,结果也是与Excel透视表完全一样。

二、分组聚合操作

在Pandas中,只需结合groupby()方法和aggregate()方法,就可以完美地得到统计结果。

import pandas as pdimport numpy as nppath = r'C:\Users\lin-a\Desktop\【数据分析从入门到进阶】配套数据\第5章\datas\diamonds.csv'diamonds = pd.read_table(path,sep=',')diamonds.head()

# 通过groupby方法,指定分组变量groups = diamonds.groupby(['color','cut'])# 对分组变量进行统计汇总result = groups.agg({'color':np.size,'carat':np.min,'price':np.mean,'face_width':np.max})result

使用Pandas实现分组聚合,需要分两步走:

指定分组变量,可以通过groupby方法完成;对不同数值变量计算各自的统计值,在这一步,必须以字典的形式控制变量名称和统计函数。

我们发现变量color和cut变成了数据框的索引,如果需要将这两个行索引转换为数据框的变量名,可以使用reset_index()方法

# 重命名变量名称result.rename(columns={'color':'counts','carat':'min_weight','price':'avg_price','face_width':'max_face_width'},inplace=True)# 将行索引换换位数据库的变量result.reset_index(inplace=True)result

如果觉得《Python数据分析补充:数据的分组与汇总(数据透视)》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。