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

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.

相关推荐
热点推荐
35中32!防守黑洞!尼克斯内线防守形同虚设,唐斯令人失望

35中32!防守黑洞!尼克斯内线防守形同虚设,唐斯令人失望

常谈体育
2024-11-13 11:56:38
球迷提醒别忘了是国米付工资,劳塔罗:我带伤上阵并付出了一切

球迷提醒别忘了是国米付工资,劳塔罗:我带伤上阵并付出了一切

直播吧
2024-11-13 09:39:10
车企指责杭州汽配价格战破坏市场,全球最大轮胎经销商申请破产

车企指责杭州汽配价格战破坏市场,全球最大轮胎经销商申请破产

汽车服务世界
2024-11-13 10:23:45
一个家庭最掉价的,是父母五六十岁时,处于以下三种状态

一个家庭最掉价的,是父母五六十岁时,处于以下三种状态

布衣粗食68
2024-11-11 15:15:30
他坚决反对“两个凡是”,曾4年晋升4级,1998年担任辽宁省委书记

他坚决反对“两个凡是”,曾4年晋升4级,1998年担任辽宁省委书记

冰点历史
2024-11-13 09:20:00
性萧条时代到来,这才是人类最大的危机

性萧条时代到来,这才是人类最大的危机

关不羽
2024-11-08 00:22:49
刀郎澳门站两场结束,那马户进退两难,11月16日澳门个唱还怎么唱

刀郎澳门站两场结束,那马户进退两难,11月16日澳门个唱还怎么唱

好妈妈看娱乐
2024-11-11 16:10:26
底裤扒光!一个假富婆迷得神魂颠倒,劳斯莱斯事件是场互联网剧本

底裤扒光!一个假富婆迷得神魂颠倒,劳斯莱斯事件是场互联网剧本

天天热点见闻
2024-11-11 11:06:27
成都环球中心天堂洲际大饭店已被东方雨虹接手,近日拟再次转让

成都环球中心天堂洲际大饭店已被东方雨虹接手,近日拟再次转让

红星资本局
2024-11-12 18:00:15
为何中国有那么多人患糖尿病?这是我见过很完美的回答!

为何中国有那么多人患糖尿病?这是我见过很完美的回答!

小啾咪侃侃史
2024-11-03 07:05:15
川普拟任的白宫安全顾问表态,将继续支持乌克兰

川普拟任的白宫安全顾问表态,将继续支持乌克兰

近距离
2024-11-12 14:54:30
中印军队伙食差异:中国一天39元吃大鱼大肉,印度钱多却吃饲料

中印军队伙食差异:中国一天39元吃大鱼大肉,印度钱多却吃饲料

牛哥说文史
2024-11-10 21:56:25
CBA最新消息!曝莫特利加盟山东,朱松玮首秀1分,考利斯坦走人

CBA最新消息!曝莫特利加盟山东,朱松玮首秀1分,考利斯坦走人

体坛瞎白话
2024-11-13 09:04:14
燃油车主对比新能源车:一笔账告诉你,缺陷让优势一文不值。

燃油车主对比新能源车:一笔账告诉你,缺陷让优势一文不值。

小毅说事
2024-09-19 08:27:10
利好消息!人社部发文,2025年起,养老保险新增一项津贴,了解下

利好消息!人社部发文,2025年起,养老保险新增一项津贴,了解下

社保小达人
2024-11-13 11:20:03
美国再次伟大可期!特朗普任命马斯克当政府效率部长,快刀出鞘了

美国再次伟大可期!特朗普任命马斯克当政府效率部长,快刀出鞘了

大风文字
2024-11-13 09:55:06
当年出道万人求的白石茉莉奈,如今出了状况?

当年出道万人求的白石茉莉奈,如今出了状况?

176小公主
2024-11-12 11:55:00
郑钦文的商业价值可能大概等于3个李娜

郑钦文的商业价值可能大概等于3个李娜

农村玲子
2024-11-13 07:23:49
婆婆350万房产全给小姑子,丈夫默许,我随口一句全家慌了

婆婆350万房产全给小姑子,丈夫默许,我随口一句全家慌了

一场奇遇日记
2024-10-18 21:20:44
队友变对手!美媒晒图:追梦本赛季三分命中率比克莱高10个百分点

队友变对手!美媒晒图:追梦本赛季三分命中率比克莱高10个百分点

直播吧
2024-11-13 02:09:03
2024-11-13 12:34:44
机器学习与Python社区
机器学习与Python社区
机器学习算法与Python
2702文章数 10325关注度
往期回顾 全部

科技要闻

特朗普宣布马斯克将领导"政府效率部"

头条要闻

彩虹-7无人机"真身"出人意料:与美RQ-180处同一水平

头条要闻

彩虹-7无人机"真身"出人意料:与美RQ-180处同一水平

体育要闻

日本“坏小子”,成为辽宁的“德布劳内”

娱乐要闻

乔欣为结婚半退圈?惊讶又不那么惊讶

财经要闻

严介和家族还不上数十万元小账单?

汽车要闻

广汽传祺S7领衔 广汽集团自主新车阵容发布

态度原创

时尚
旅游
教育
本地
健康

静奢风,有品位的都在穿

旅游要闻

发现宫门、供排水设施等遗迹 圆明园考古新发现

教育要闻

【地理实验】地理课上怎么做实验?高中地理实验——可以做的23个地理实验集锦

本地新闻

重庆记忆|跟黑神话悟空一起打卡大足石刻

花18万治疗阿尔茨海默病,值不值?

无障碍浏览 进入关怀版