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

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.

相关推荐
热点推荐
央视曝光!停止佩戴这种东西,辐射超标1050倍!不少人还在使用

央视曝光!停止佩戴这种东西,辐射超标1050倍!不少人还在使用

南风西洲
2024-09-19 16:06:06
张雨绮风波后首度现身机场,穿迷彩裤配大黄靴粗犷简约,毫无往日半点精致感!

张雨绮风波后首度现身机场,穿迷彩裤配大黄靴粗犷简约,毫无往日半点精致感!

白宸侃片
2024-09-20 16:44:50
一瑜伽服女子挑衣服,遭遇男子古怪行为:将不明液体喷到女子腿部

一瑜伽服女子挑衣服,遭遇男子古怪行为:将不明液体喷到女子腿部

趣笔谈
2024-09-20 10:47:53
爆雷!大裁员!“中国员工已停工”

爆雷!大裁员!“中国员工已停工”

新浪财经
2024-09-18 14:39:05
天安门广场实行实名预约参观,须提前1-7日预约

天安门广场实行实名预约参观,须提前1-7日预约

新京报
2024-09-20 10:47:21
惊天一击!哈马斯火箭弹直击以色列国会,内塔尼亚胡逃离成笑柄!

惊天一击!哈马斯火箭弹直击以色列国会,内塔尼亚胡逃离成笑柄!

文雅笔墨
2024-09-20 15:57:36
撒贝宁成都吃火锅被偶遇,与老戏骨王志飞,谈笑风生,帅翻了!

撒贝宁成都吃火锅被偶遇,与老戏骨王志飞,谈笑风生,帅翻了!

娱乐书坊
2024-09-20 10:24:39
最大规模弹药库爆炸纪录乌军造:20万吨当量震撼莫斯科!

最大规模弹药库爆炸纪录乌军造:20万吨当量震撼莫斯科!

大风文字
2024-09-19 16:17:16
王暖暖爆猛料:被推下悬崖和婆媳矛盾有关,俞晓东嫌让他妈没面子

王暖暖爆猛料:被推下悬崖和婆媳矛盾有关,俞晓东嫌让他妈没面子

娱乐八卦木木子
2024-09-20 12:02:58
张本智和兄妹回出生地!向日本市长表态,不认四川祖籍,早已忘本

张本智和兄妹回出生地!向日本市长表态,不认四川祖籍,早已忘本

三十年莱斯特城球迷
2024-09-18 17:08:27
传索尼将Xperia手机生产工厂迁往印度 放弃迁回东莞

传索尼将Xperia手机生产工厂迁往印度 放弃迁回东莞

手机中国
2024-09-19 13:30:08
黄磊的女儿黄多多才18岁,却展现了超出同龄人的成熟感

黄磊的女儿黄多多才18岁,却展现了超出同龄人的成熟感

视点历史
2024-09-20 00:30:03
上海男篮69:66逆转山东,山东大外援克里斯不输吉伦沃特

上海男篮69:66逆转山东,山东大外援克里斯不输吉伦沃特

李广专业体育评论
2024-09-20 17:33:22
乌军阵亡5万人?乌克兰议员:泽连斯基必须解职国防部长和总司令

乌军阵亡5万人?乌克兰议员:泽连斯基必须解职国防部长和总司令

鹰眼Defence
2024-09-19 15:50:40
广东本轮高温天气将于本周末结束!下周粤东市县将有明显降雨

广东本轮高温天气将于本周末结束!下周粤东市县将有明显降雨

南方都市报
2024-09-20 13:40:08
19岁高中男生,和45岁保姆,两人在陪读公寓相处2个月

19岁高中男生,和45岁保姆,两人在陪读公寓相处2个月

牛城王小帅
2024-08-19 15:49:06
批复同意!全国首个,江苏南京被国家委以重任,释放了什么信号?

批复同意!全国首个,江苏南京被国家委以重任,释放了什么信号?

科学发掘
2024-09-20 17:35:25
除了香港澳门,中国还有一个地方租期是99年,至今有没有归还呢

除了香港澳门,中国还有一个地方租期是99年,至今有没有归还呢

娱乐圈的大爆炸
2024-09-20 03:58:47
用户仅退款反被平台薅走20亿元?京淘淘:未跑路,发现“职业羊毛党”

用户仅退款反被平台薅走20亿元?京淘淘:未跑路,发现“职业羊毛党”

红星资本局
2024-09-20 12:44:04
消息称IBM本周秘密大裁员,员工大多在50至55岁之间,影响数千人

消息称IBM本周秘密大裁员,员工大多在50至55岁之间,影响数千人

美人茶话会
2024-09-20 13:55:30
2024-09-20 19:54:44
机器学习与Python社区
机器学习与Python社区
机器学习算法与Python
2615文章数 10296关注度
往期回顾 全部

科技要闻

苹果华为新品发售撞车,有现货,都要加价

头条要闻

河南叶县县委书记回应"强拆果园"事件:不存在强拆

头条要闻

河南叶县县委书记回应"强拆果园"事件:不存在强拆

体育要闻

沃神把最后的独家爆料留给自己

娱乐要闻

曝叶珂怀孕!狗仔称黄晓明陪女方养胎

财经要闻

北京房价,跌回8年前了!

汽车要闻

租电才卖14.99万的乐道L60 “杀疯了”?

态度原创

亲子
游戏
教育
家居
数码

亲子要闻

孩子长期戴耳机,一定要注意会带来很多问题哦!

《黑山之巅》封测正式定档9月23日!

教育要闻

25考研预报名,这笔钱一定要准备好!

家居要闻

简洁高雅 木质家装塑造品质生活

数码要闻

华为首款三折屏Mate XT 非凡大师体验:尊贵且实用 名副其实的超旗舰

无障碍浏览 进入关怀版