1。图解Pandas数据透视表和交叉表终于开始Pandas进阶内容的编写了。数据透视表相信很多人应该都知道,经常会在Excel中制作它来实现数据的分组汇总统计。在Pandas中,我们称之为pivot_table。数据透视表的创建非常灵活,我们可以随意定制自己想要的计算和统计需求。一般在制作报表神器的时候用到。下面通过具体的例子来比较Excel和Pandas中数据透视表的实现。2.Excel数据透视表下面是使用Excel表格中的消费数据制作的数据透视表(部分数据截图)。我们统计了不同性别、不同日期的消费金额和小费,也展示了总数据。那么如果使用pandas怎么实现呢???3.数据透视表参数pandas中使用的数据透视表是:pandas.pivot_tablepd.pivot_table(data,#dataformakingpivottablevalues=None,#valueindex=None,#rowindexcolumns=None,#columnattributeaggfunc='mean',#使用的函数,默认为均值fill_value=None,#缺失值填充margins=False,#是否显示合计dropna=True,#缺失值处理margins_name='All',#合计为显示为Allobserved=False,sort=True#Sortingfunctiononlyavailableinversion1.3.0)最重要的参数有:values,index,columns,aggfunce,甚至margins,margins_name附上官网学习地址:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.pivot_table.html4.数据透视表参数详解4.1参数index表示行索引1,单层索引2,多层行我们指定的索引生成数据透视表4.2参数值在我们上面的索引中e的参数,我们没有指定values参数,pandas会默认计算数据透视表中的所有数值数据。现在指定参数计算出来的数据:有values,只有我们指定的数据才会显示,没有values,value类型的数据汇总结果都会显示。4.3参数columnscolumns是显示列属性信息的参数。如果我们把天放在索引参数中,它会是什么样子?相当于:把上面的宽表格式转换成下面的长表格式,然后比较两种不同的形式:4.4参数aggfuncaggfunc是一个非常灵活的参数,用来指定我们要用哪个函数进行汇总,默认就是均值mean,我们还可以用sumsum,最值max等,多个函数需要放在一个list里面。我们比较默认平均均值的情况和求和的情况:均值和求和求和的关系:我们可以在aggfunc函数中指定多个函数,将这些函数放在同一个列表中:summation:np.sum求均值value:mean求数:size再看一个例子:4.5参数margins和margins_name用于对数据透视表中的分组数据进行汇总和展示。需要注意的是参数margins_name的设置只有在margins=True时才会生效。修改汇总显示的名称:如果有列字段,也会显示汇总数据:5.交叉表交叉表可以理解为一种特殊的数据透视表,专门用来计算分组的频率。5.1参数crosstab中各个参数的解释还是和数据透视表一样:pandas.crosstab(index,#rowindex,必须是数组结构数据,或者Series,或者两列的列表,#columnfield;Data要求同上values=None,#Datatobepivotedrownames=None,#Rowandcolumnnamescolnames=None,aggfunc=None,#Perspectivefunctionmargins=False,#Summaryandnamesettingmargins_name='All',dropna=True,#放弃缺失值normalize=False#数据归一化;可以是Boolean,all,index,columns,or{0,1})最后一个参数的解释:如何选择归一化的标准Ifpassed'all'或True,将规范化所有值:使用all,规范化所有数值数据如果传递'index'将对每一行进行规范化:使用索引,仅对行进行规范化如果传递'columns'将规范化每列:使用列,仅对列进行归一化如果边距为True,还将对边距值进行归一化:如果margins=True,则total值也会参与归一化5.2参数使用当然有时透视表和交叉表是否可以实现同样的功能:6.groupby的实现其实透视表或交叉表的本质就是汇总统计结果在团队中。我们也可以使用groupby来实现:1.先分组统计。2.axisrotationunstack上结果的格式不是很好。友好一点,使用多级索引,我们使用轴旋转函数unstack将行转列:7.groupby和pivottable的比较最后用一个例子来比较groupby和pivottable:8.备忘录,很流行的网上张图说明了Pandas数据透视表功能的图。它用一个简单的数据,把pivot_table函数的每个参数的含义都解释清楚了,保存起来以备后用!网络图
