在Pandas中,透视表(pivot table)是一种数据汇总工具,它类似于Excel中的透视表,可以通过聚合、过滤等操作对数据进行快速统计和分析,帮助我们更好地理解和处理数据。
下面我们通过一个示例来详细讲解Pandas中的透视表。
假设我们有一个销售数据的DataFrame,每行表示一次销售,包括以下字段:
- date: 销售时间
- product: 销售的商品名称
- category: 商品所属的类别
- sales: 销售额
- city: 销售所在的城市
首先,我们需要导入Pandas库和创建示例数据:
import pandas as pd
data = {
'date': ['2021-01-01', '2021-01-02', '2021-01-03', '2021-01-01', '2021-01-02', '2021-01-03'],
'product': ['A', 'B', 'C', 'A', 'B', 'C'],
'category': ['cat1', 'cat2', 'cat1', 'cat1', 'cat2', 'cat1'],
'sales': [100, 200, 150, 120, 180, 130],
'city': ['New York', 'Los Angeles', 'Chicago', 'New York', 'Los Angeles', 'Chicago']
}
df = pd.DataFrame(data)
接下来,我们可以使用Pandas的pivot_table()
函数来创建透视表。pivot_table()
函数的基本语法如下:
df.pivot_table(values=None, index=None, columns=None, aggfunc='mean', fill_value=None, margins=False, margins_name='All')
values
:指定用于聚合的数值列。index
:指定用于分组的行索引。columns
:指定用于分组的列索引。aggfunc
:指定聚合函数,常用的有sum
、mean
、count
、max
、min
等。fill_value
:指定用于填充缺失值的值。margins
:指定是否在结果中添加分组汇总信息。margins_name
:指定分组汇总信息的名称。
比如,我们可以使用以下代码创建一个透视表,以每种商品在每个城市的销售额为统计指标:
pd.pivot_table(df, values='sales', index='product', columns='city', aggfunc='sum')
运行结果如下:
city Chicago Los Angeles New York
product
A 120.0 180.0 100.0
B NaN 380.0 200.0
C 150.0 130.0 NaN
其中,行表示商品名称,列表示城市,每个单元格表示对应商品在对应城市的销售额总和。可以看出,商品A在芝加哥和洛杉矶的销售额分别为120和180,商品B在洛杉矶和纽约的销售额分别为380和200,商品C在芝加哥和纽约的销售额分别为150和130。
除了单个聚合函数,aggfunc
参数还可以接受一个列表或字典,用于同时计算多个聚合指标。比如,我们可以使用以下代码创建一个透视表,以每种商品在每个城市的平均销售额和销售量为统计指标:
pd.pivot_table(df, values=['sales', 'product'], index='category', columns='city', aggfunc={'sales': 'mean', 'product': 'count'})
运行结果如下:
product sales
city Chicago Los Angeles New York Chicago Los Angeles New York
category
cat1 2 2 2 140.0 155.0 125.0
cat2 1 1 1 200.0 190.0 200.0
其中,行表示类别,列表示城市,每个单元格分别表示对应类别在对应城市的平均销售量和平均销售额。可以看出,cat1类别在三个城市的平均销售额分别为140、155、125,平均销售量分别为2、2、2,cat2类别在三个城市的平均销售额分别为200、190、200,平均销售量分别为1、1、1。
除了上述示例之外,透视表还可以进行多级分组、过滤、对列进行操作等等,具体操作可以参考Pandas官方文档和相关教程。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Pandas中的透视表 - Python技术站