Pandas数据分析之pandas数据透视表和交叉表
Pandas 是一个具有高效数据操作和数据分析能力的 Python 库。本文将介绍 Pandas 中的数据透视表和交叉表,以及如何在实际项目中使用它们。
什么是数据透视表?
数据透视表是一种在 Excel 中极为常见的数据分析技术,它可以将原始数据以任意维度进行聚合,并展示在一个新的表格中。在 Pandas 中,我们可以使用 pivot_table 方法来实现数据透视表的创建。
pivot_table() 方法
pivot_table() 方法的语法如下:
DataFrame.pivot_table(data, values=None, index=None, columns=None, aggfunc='mean', fill_value=None, margins=False, dropna=True, margins_name='All', observed=False)
其中,参数 data 为原始数据,必填;values 参数是需要聚合的值,可以是一个单独的列名称,也可以是多个列名的 list,可选;index 参数是需要分组的列,可选;columns 参数也是需要分组的列,可选;aggfunc 参数是聚合函数,可选,默认为 mean;fill_value 参数是用于替换缺失值的标量值,可选;margins 参数是针对行进行总计或针对列进行总计,可选;dropna 参数表示是否删除结果中的缺失值,可选,缺省值为 True;margins_name 参数是用于添加总计行或列的名称,可选,默认为 "All";observed 参数表示是否限制允许的因子集合,可选。
我们来看一个具体的例子。
假设我们有如下的表格:
日期 | 城市 | 温度 |
---|---|---|
2019-01-01 | 上海 | 15 |
2019-01-01 | 北京 | 10 |
2019-01-02 | 上海 | 13 |
2019-01-02 | 北京 | 8 |
我们想按每个城市的平均温度展示数据透视表。我们可以使用以下代码:
import pandas as pd
data = pd.DataFrame({"date": ["2019-01-01", "2019-01-01", "2019-01-02", "2019-01-02"],
"city": ["上海", "北京", "上海", "北京"],
"temperature": [15, 10, 13, 8]})
pivot = pd.pivot_table(data, index=["city"], values=["temperature"], aggfunc="mean")
print(pivot)
输出结果:
temperature
city
上海 14.000000
北京 9.000000
我们可以看到,我们成功地按城市进行了分组并显示了平均温度。
什么是交叉表?
交叉表是一种在统计学和数据分析中常用的表格形式。它可以展示两个或多个因素的聚合结果,并在行和列显示汇总数据。在 Pandas 中,我们可以使用 crosstab 方法来创建交叉表。
crosstab() 方法
crosstab() 方法的语法如下:
pd.crosstab(index, columns, values=None, rownames=None, colnames=None, aggfunc=None, margins=False, margins_name='All', dropna=True, normalize=False)
其中,参数 index 为第一个因素,需要进行分组;columns 为第二个因素,也需要进行分组;values 为可选参数,为聚合的值;rownames 和 colnames 分别为行名称和列名称;aggfunc 表示聚合函数,可选;margins 和 margins_name 用来为行或列添加总计。normalize 参数表示是否显示百分比。
我们来看一个具体的例子。
假设我们有如下的表格:
节点 | 动作 |
---|---|
1 | 开始 |
1 | 结束 |
2 | 开始 |
3 | 结束 |
3 | 开始 |
我们想按照每个节点和每个动作的数量建立交叉表。我们可以使用以下代码:
import pandas as pd
data = pd.DataFrame({"node": [1, 1, 2, 3, 3],
"action": ["begin", "end", "begin", "end", "begin"]})
cross = pd.crosstab(index=data["node"], columns=data["action"])
print(cross)
输出结果:
action begin end
node
1 1 1
2 1 0
3 1 1
我们可以看到,我们成功地按照节点和动作创建了交叉表,并展示了数量。
总结
数据透视表和交叉表是数据分析中非常有用的工具,它们可以让我们以任意维度对数据进行分类汇总,并展示在一个新的表格中。在 Pandas 中,我们可以使用 pivot_table() 和 crosstab() 方法来创建这些表格。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Pandas数据分析之pandas数据透视表和交叉表 - Python技术站