网易首页 > 网易号 > 正文 申请入驻

Pandas中使用pivot_table函数进行高级数据汇总

0
分享至

Pandas的pivot_table函数是一个强大的数据分析工具,可以帮助我们快速地对数据进行汇总和重塑。

本文将详细介绍pivot_table的用法及其在数据分析中的应用。

1. pivot_table函数简介

pivot_table函数的基本语法如下:

pandas.pivot_table(data, values=None, index=None, columns=None, aggfunc='mean', 
                   fill_value=None, margins=False, dropna=True, margins_name='All', 
                   observed=False, sort=True)

主要参数说明:

  • data: 要进行汇总的DataFrame

  • values: 需要聚合的列

  • index: 行索引

  • columns: 列索引

  • aggfunc: 聚合函数,默认为mean

  • fill_value: 填充缺失值

  • margins: 是否添加汇总行/列

  • dropna: 是否删除全为NaN的列

2. 基本用法示例

让我们通过一个简单的例子来了解pivot_table的基本用法:

import pandas as pd
import numpy as np

 # 创建示例数据 
df = pd.DataFrame({
    '日期': ['2023-01-01', '2023-01-01', '2023-01-02', '2023-01-02'],
    '产品': ['A', 'B', 'A', 'B'],
    '销量': [100, 150, 120, 180],
    '价格': [10, 15, 12, 16]
})

 # 使用pivot_table 
result = pd.pivot_table(df, values='销量', index='日期', columns='产品', aggfunc='sum')

print(result)

输出结果:

产品             A    B
日期                    
2023-01-01  100  150
2023-01-02  120  180

在这个例子中,我们以"日期"为行索引,"产品"为列索引,对"销量"进行了汇总。

3. 多个值列和聚合函数

pivot_table允许我们同时对多个列进行汇总,并使用不同的聚合函数:

result = pd.pivot_table(df, values=['销量', '价格'], 
                        index='日期', 
                        columns='产品', 
                        aggfunc={'销量': 'sum', '价格': 'mean'})

print(result)

输出结果:

              价格         销量     
产品             A     B    A    B
日期                              
2023-01-01  10.0  15.0  100  150
2023-01-02  12.0  16.0  120  180
4. 使用多级索引

pivot_table支持多级索引,这在处理复杂数据时非常有用:

df['城市'] = ['北京', '上海', '北京', '上海']
result = pd.pivot_table(df, values='销量', 
                        index=['日期', '城市'], 
                        columns='产品', 
                        aggfunc='sum')
print(result)

输出结果:

产品                 A      B
日期         城市              
2023-01-01 上海    NaN  150.0
           北京  100.0    NaN
2023-01-02 上海    NaN  180.0
           北京  120.0    NaN
5. 添加汇总行和列

使用margins参数可以添加汇总行和列:

result = pd.pivot_table(df, values='销量', 
                        index=['日期', '城市'], 
                        columns='产品', 
                        aggfunc='sum', 
                        margins=True)
print(result)

输出结果:

产品                 A      B    All
日期         城市                    
2023-01-01 上海    NaN  150.0  150.0
           北京  100.0    NaN  100.0
2023-01-02 上海    NaN  180.0  180.0
           北京  120.0    NaN  120.0
All             220.0  330.0  550.0
6. 填充缺失值

使用fill_value参数可以填充缺失值:

result = pd.pivot_table(df, values='销量', 
                        index=['日期', '城市'], 
                        columns='产品', 
                        aggfunc='sum', 
                        fill_value=0)
print(result)

输出结果:

产品                 A    B
日期         城市            
2023-01-01 上海     0  150
           北京   100    0
2023-01-02 上海     0  180
           北京   120    0
7. 高级应用:自定义聚合函数

pivot_table允许我们使用自定义的聚合函数:

def custom_agg(x):
    return x.max() - x.min()

result = pd.pivot_table(df, values=['销量', '价格'], 
                        index='日期', 
                        columns='产品', 
                        aggfunc={'销量': 'sum', '价格': custom_agg})
print(result)

输出结果:

              价格     销量     
产品             A    B    A    B
日期                              
2023-01-01    0.0  0.0  100  150
2023-01-02    0.0  0.0  120  180
8. 结合query进行数据筛选

pivot_table生成的结果是一个DataFrame,我们可以使用query方法进行进一步的数据筛选:

result = pd.pivot_table(df, values=['销量', '价格'], 
                        index=['日期', '城市'], 
                        columns='产品', 
                        aggfunc='sum')

filtered_result = result.query('城市 == "北京"')
print(filtered_result)

输出结果:

                价格     销量    
产品               A    B    A   B
日期         城市                  
2023-01-01 北京  10.0  0.0  100   0
2023-01-02 北京  12.0  0.0  120   0
9. 总结

Pandas的pivot_table函数是一个强大的数据分析工具,它可以帮助我们快速地对数据进行汇总和重塑。通过灵活使用其各种参数,我们可以轻松地创建复杂的数据透视表,从而更好地理解和分析数据。

在实际应用中,pivot_table常用于销售数据分析、财务报表生成、用户行为分析等多个领域。掌握这个函数将大大提高您的数据分析效率。

参考资料:

  1. Pandas官方文档 - pivot_table

  2. Practical Business Python - Pandas Pivot Table Explained

  3. Spark By Examples - Pandas Pivot Table Explained with Examples


特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
亚马尔世界杯夺冠后让3岁弟弟摸奖杯,他父亲却无缘现场见证,其父自曝患癫痫不便到场观赛

亚马尔世界杯夺冠后让3岁弟弟摸奖杯,他父亲却无缘现场见证,其父自曝患癫痫不便到场观赛

红星新闻
2026-07-20 10:04:12
菲律宾谴责中方“暴力激进”,公布受伤人员照片,绝口不提先挑衅

菲律宾谴责中方“暴力激进”,公布受伤人员照片,绝口不提先挑衅

光电科技君
2026-07-21 00:17:34
西班牙队领奖时,阿根廷队背对颁奖台被批无风度 奥尔莫:我们不在乎,但他们应为年轻人树立榜样

西班牙队领奖时,阿根廷队背对颁奖台被批无风度 奥尔莫:我们不在乎,但他们应为年轻人树立榜样

红星新闻
2026-07-20 15:14:49
39岁拜纳姆近况,退役远离NBA,满头白发,财富自由也发福了

39岁拜纳姆近况,退役远离NBA,满头白发,财富自由也发福了

大西体育
2026-07-20 17:14:58
新冠再次爆发?可能不发烧!医生:出现6个症状,别犹豫赶紧就医

新冠再次爆发?可能不发烧!医生:出现6个症状,别犹豫赶紧就医

健康科普365
2026-07-20 12:30:18
恩佐两黄变一红离场时双手合十,恳求阿根廷球迷原谅

恩佐两黄变一红离场时双手合十,恳求阿根廷球迷原谅

懂球帝
2026-07-20 19:14:18
日媒:韩国人要求禁播侮辱韩国足球的《功夫女足》,建议自查02世界杯

日媒:韩国人要求禁播侮辱韩国足球的《功夫女足》,建议自查02世界杯

情感大头说说
2026-07-20 13:54:37
美媒终于回过味:中国这哪是买石油,分明是在给俄进行“大换血”

美媒终于回过味:中国这哪是买石油,分明是在给俄进行“大换血”

阿諢体育
2026-07-20 12:24:50
1岁7个月宝宝在“网红村”乘充气船被冲走遇难

1岁7个月宝宝在“网红村”乘充气船被冲走遇难

闪电新闻
2026-07-20 17:36:14
两天两个王炸!国产大飞机终于成了,波音和空客的好日子没几年了

两天两个王炸!国产大飞机终于成了,波音和空客的好日子没几年了

罗富强说
2026-07-20 08:47:26
随着西班牙1-0夺冠,世界48支参赛队最终名次出炉:亚洲劲旅垫底

随着西班牙1-0夺冠,世界48支参赛队最终名次出炉:亚洲劲旅垫底

侧身凌空斩
2026-07-20 06:06:14
伊朗突然亮出底牌,穆杰塔巴警告特朗普:美军最怕的事情可能来了

伊朗突然亮出底牌,穆杰塔巴警告特朗普:美军最怕的事情可能来了

丁隗解说
2026-07-20 23:11:51
太猛了!仁爱礁冲突现场曝光:中国海警几棍子就打怵了菲律宾人!

太猛了!仁爱礁冲突现场曝光:中国海警几棍子就打怵了菲律宾人!

阿龙聊军事
2026-07-20 21:55:17
西班牙加时117分钟绝杀夺冠 梅西悲伤告别?世界杯组织遭痛批

西班牙加时117分钟绝杀夺冠 梅西悲伤告别?世界杯组织遭痛批

竞技风云录
2026-07-21 00:15:34
曝44岁李小璐疑似生二胎,与保姆带娃外出,小姑娘已经三岁了

曝44岁李小璐疑似生二胎,与保姆带娃外出,小姑娘已经三岁了

扒虾侃娱
2026-07-20 12:24:00
“请3天假能休13天”,冲上热搜!网友:完美无缝衔接

“请3天假能休13天”,冲上热搜!网友:完美无缝衔接

极目新闻
2026-07-20 14:47:08
左宗棠巡营发现士兵暴晒半日无汗,当即下令:此人有情况,处理掉

左宗棠巡营发现士兵暴晒半日无汗,当即下令:此人有情况,处理掉

凡人侃史
2026-07-20 16:14:37
新冠病毒又开始活跃了,三针科兴遭网友热议

新冠病毒又开始活跃了,三针科兴遭网友热议

映射生活的身影
2026-07-18 21:52:52
官方:比利时队与主帅鲁迪-加西亚到期不再续约

官方:比利时队与主帅鲁迪-加西亚到期不再续约

懂球帝
2026-07-20 21:00:36
德国女博士惊人言论流出:号召欧洲白人女性放弃生育,我的血脉到我为止

德国女博士惊人言论流出:号召欧洲白人女性放弃生育,我的血脉到我为止

小徐讲八卦
2026-07-20 09:27:43
2026-07-21 00:47:00
Ai学习的老章 incentive-icons
Ai学习的老章
Ai学习的老章
3477文章数 11180关注度
往期回顾 全部

科技要闻

网易科技"未来大奖2026上半年AI榜单"揭晓

头条要闻

媒体:驱逐所有以色列人 马来西亚对以强硬几乎零成本

头条要闻

媒体:驱逐所有以色列人 马来西亚对以强硬几乎零成本

体育要闻

65岁肌肉男,世界杯最年长冠军主帅

娱乐要闻

谢霆锋发文确认父亲谢贤去世 享年89岁

财经要闻

AI开始挤泡沫

汽车要闻

综合续航超1600km 2027款星途ES上市置换价16.99万起

态度原创

艺术
亲子
家居
公开课
军事航空

艺术要闻

为什么中国低端住宅楼的配色,喜欢用“米黄+深棕”?

亲子要闻

宝蓝和爸爸玩过家家,扮演美食摊主,比赛看谁的生意好~

家居要闻

2026建博会(广州) 公装联探展交流活动

公开课

李玫瑾:为什么性格比能力更重要?

军事要闻

两名美军士兵死亡 美伊冲突升级

无障碍浏览 进入关怀版