crosstab交叉表_Python之Pandas使用系列(五):学习Pandas数据透视表和交叉表

crosstab交叉表_Python之Pandas使用系列(五):学习Pandas数据透视表和交叉表_第1张图片

这是《Python之Pandas使用系列》的第五个章节,本章我们主要介绍Pandas数据透视表和交叉表的使用。

我们先看看Pandas中关于数据透视表与交叉表的定义描述:

数据透视表(Pivot Table):"将电子表格样式的数据透视表创建为DataFrame。数据透视表中的级别将存储在MultiIndex对象中(结果DataFrame的索引和列上的分层索引)。

交叉表(Crosstab):"计算两个(或多个)因素的简单交叉表。默认情况下,除非传递值数组和聚合函数,否则将计算因子的频率表。"

数据透视表可让您计算、汇总和聚合数据。MS Excel具有内置的此功能,并提供了一种从数据创建数据透视表的简便方法。它是一个功能强大的工具,可让您通过"总和","计数","平均值","最大"和"最小"等计算来汇总数据。创建数据透视表后,Pandas还具有使用数据框或数据列表构建数据透视表和交叉表的功能,并且还可以配置数据透视表的行和列,并对数据应用所有过滤器和排序顺序。

在本文中,我们将了解如何使用这两个功能以及使用Pandas的各种选项来构建有意义的透视表及汇总各种数据。

让我们创建两个员工基本信息的的Dataframe

crosstab交叉表_Python之Pandas使用系列(五):学习Pandas数据透视表和交叉表_第2张图片

现在,我们将使用此数据来创建数据透视表。

创建数据透视表

crosstab交叉表_Python之Pandas使用系列(五):学习Pandas数据透视表和交叉表_第3张图片

这里要注意的重要一点是,属性索引是数据中的行的列表,列是您要查看其薪资数据(即值)的行的列。因此,在这里我们要查看每个员工的"Address"和"Sex"及其"Salary"情况。

默认情况下,aggreggate函数为mean。这里A1的薪资的mean值为8100.

Pandas 透视表的 Aggfunc:

让我们看一下另一个属性aggfunc,您可以在其中添加一个或一个函数列表,因此我们已经看到,如果您没有明确提及此参数,则默认func为均值(mean)。现在让我们检查另一个聚集,即总和,最小,最大,计数等。

让我们从min函数开始

crosstab交叉表_Python之Pandas使用系列(五):学习Pandas数据透视表和交叉表_第4张图片

它找到该组的最小值。

Aggfunc列表

让我们在列表中添加两个aggfunc,即min和sum

crosstab交叉表_Python之Pandas使用系列(五):学习Pandas数据透视表和交叉表_第5张图片

您可以在此处看到两个表,一个是min,另一个是max,用红色框括起来。

Pivot table margins

现在,数据透视表中还有另一个有用的参数,称为边距,用于汇总行和列值。如果margin设置为True,则添加行和列All,并且agfunc即min,max将应用于Margin列,体现为每行的汇总数据。

crosstab交叉表_Python之Pandas使用系列(五):学习Pandas数据透视表和交叉表_第6张图片

通过使用另一个参数margins_name重命名"summary"列。因此,在这里我将两个列名称都替换为小计

绘制数据透视表

crosstab交叉表_Python之Pandas使用系列(五):学习Pandas数据透视表和交叉表_第7张图片

Pandas Crosstabs

其表格结构显示了不同变量之间的关系。Pandas交叉表和数据透视表没有太大区别,它的工作方式几乎相同。在查看源代码后,我看到的唯一区别是Crosstab适用于Series或变量列表,而Pivot适用于数据框,内部使用交叉表调用数据透视表功能。因此,当您具有数据列表或系列时,应使用交叉表,并且如果数据框中有可用数据,则应使用数据透视表。

将数据透视表导出到Excel

现在,我们已经有一个外观漂亮的数据透视表,并且要将其导出到Excel。使用Pandas to_csv函数将数据透视表或交叉表导出到csv

crosstab交叉表_Python之Pandas使用系列(五):学习Pandas数据透视表和交叉表_第8张图片

结论

我们已经看到数据透视表和交叉表都可以很好地处理任何数据,并可用于使用数据快速构建数据透视表。两种形式的区别在于,交叉表可用于系列,列表或数据框列,而数据透视表可用于整个数据框。另外,当您必须在行和列中查找百分比或标准化数据时,交叉表中的标准化功能也非常有用。

如果发现任何不正确的地方,或者想分享有关上述主题的更多信息,欢迎反馈。

你可能感兴趣的:(crosstab交叉表)