数据透视表与交叉表


数据透视表与交叉表

数据透视表是电子表格程序和其他数据分析软件中常见的数据汇总工具。它根据一个或多个键聚合一张表的数据,将数据在矩形格式中排列,其中一些分组键是沿着行的,另一些是沿着列的。DataFrame拥有一个pivot_table方法,并且还有还一个顶层的pandas.pivot_table函数。除了为groupby提供一个方便接口,pivot_table还可以添加部分总计,也称作边距。

回到小费数据集,假设要计算一张在行方向上按day和smoker排列的分组平均值(默认的pivot_table聚合类型)的表:

这个功能也可以直接使用groupby实现。现在,假设只想在tip_pct和size上进行聚合,并根据time分组。把smoker放入表的列,而将day放入表的行:

可以通过传递margins=True来扩充这个表来包含部分总计。这会添加All行和列标签,其中相应的值是单层中所有数据的分组统计值:

这里,All的值是均值,且该均值是不考虑吸烟者与非吸烟者(All列)或行分组中任何两级的(All行)。

要使用不同的聚合函数时,将函数传递给aggfunc。例如,’count’或者len将给出一张分组大小的交叉表(计数或出现频率):

下表是pivot_table方法的概括。

1、交叉表:crosstab

交叉表(简写为crosstab)是数据透视表的一个特殊情况,计算的是分组中的频率。

作为研究分析的一部分,可能想按照国籍和惯用性来总结这些数据。可以使用pivot_table来实现这个功能,但是pandas.crosstable函数更为方便:

crosstab的前两个参数可是数组、Series或数组的列表。在小费数据中可以这么做: