在 pandas 中,做数据透视表主要使用 pivot_table() 函数。下面从基础到常用场景给你讲清楚。
import pandas as pd
pd.pivot_table(
data,
values=None, # 要聚合的数值列
index=None, # 行分组字段
columns=None, # 列分组字段
aggfunc='mean', # 聚合方式(mean/sum/count等)
fill_value=None, # 缺失值填充
margins=False # 是否显示总计
)
df = pd.DataFrame({
'地区': ['华北', '华北', '华东', '华东', '华南', '华南'],
'产品': ['A', 'B', 'A', 'B', 'A', 'B'],
'销量': [100, 150, 200, 250, 300, 350],
'利润': [10, 15, 20, 25, 30, 35]
})
pd.pivot_table(df, values='销量', index='地区', aggfunc='sum')
结果:
销量
地区
华北 250
华东 450
华南 650
pd.pivot_table(
df,
values='销量',
index='地区',
columns='产品',
aggfunc='sum'
)
结果:
产品 A B
地区
华北 100 150
华东 200 250
华南 300 350
pd.pivot_table(
df,
values=['销量', '利润'],
index='地区',
aggfunc='sum'
)
pd.pivot_table(
df,
values='销量',
index='地区',
aggfunc={
'销量': ['sum', 'mean', 'count']
}
)
pd.pivot_table(
df,
values='销量',
index='地区',
columns='产品',
aggfunc='sum',
margins=True,
margins_name='总计'
)
pd.pivot_table(
df,
values='销量',
index='地区',
columns='产品',
aggfunc='sum',
fill_value=0
)
如果只是计数(类似 Excel 透视表计数):
pd.crosstab(df['地区'], df['产品'])
而 pivot_table 更灵活,支持任意聚合函数。
如果你有 具体业务场景(如销售、财务、用户行为),可以把数据结构发我,我可以直接帮你写透视表代码。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。