前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >熟练掌握 Pandas 透视表,数据统计汇总利器

熟练掌握 Pandas 透视表,数据统计汇总利器

作者头像
用户4945346
发布2024-05-27 20:23:53
1800
发布2024-05-27 20:23:53
举报
文章被收录于专栏:pythonista的日常pythonista的日常

有一堆杂乱的数据,你想按某些规则把它们分门别类、汇总统计?这时候就需要数据"整理达人" Pandas.pivot_table 出马了,这是 Pandas 快速上手系列的第 8 篇。

pivot_table 可以把一个大数据表中的数据,按你指定的"分类键"进行重新排列。比如你有一份销售记录,可以让 pivot_table 按"商品"和"地区"两个键将数据重新排列成一个漂亮的交叉表。

这个表里的每个格子,都会显示对应"地区+产品"的销售数据汇总。你还可以指定用"总和"、"均值"等聚合函数来汇总每个格子的数据。

拥有了这张透视表,数据就井然有序了。你可以一览无余地观察每个类别、每个地区的销售情况,发现潜在规律和异常。无论是数据分析、报表制作,还是其他数据处理场景, pivot_table 都是你的得力助手。

对于繁琐的数据整理和统计工作, pivot_table 就像个"数据武术家",它能让你的数据重现清晰有序的"功夫阵"。下面来看它的具体用法吧!

语法和对应的参数含义:

代码语言:javascript
复制
import pandas
df = pandas.pivot_table(
    data="要进行汇总的数据集(DataFrame)",
    values="要聚合的列或列的列表", 
    index="要作为行索引的列或列的列表",
    columns="要作为列索引的列或列的列表",
    aggfunc="用于聚合数据的函数或函数列表,默认是 numpy.mean",
    fill_value="填充缺失值的标量值",
    margins="布尔值,是否添加行和列的总计,默认是 False",
    margins_name="总计行和列的名称,默认是 All", 
    dropna="布尔值,是否删除所有结果为全 NaN 的列,默认是 True",
    observed="布尔值,对于分类列,是否只显示实际出现的类别,默认是 False",
    sort="布尔值,是否对结果进行排序,默认是 True"
)

代码示例:

代码语言:javascript
复制
import pandas as pd

# 生成一个数据集 df 
data = {
    'Region': ['North', 'South', 'East', 'West', 'North', 'South', 'East', 'West'],
    'Product': ['A', 'A', 'B', 'B', 'C', 'C', 'A', 'A'],
    'Sales': [100, 150, 200, 130, 120, 180, 220, 210],
    'Quantity': [10, 15, 20, 13, 12, 18, 22, 21]
}
df = pd.DataFrame(data)

数据集 df 内容

代码语言:javascript
复制
In [53]: df
Out[53]:
  Region Product  Sales  Quantity
0  North       A    100        10
1  South       A    150        15
2   East       B    200        20
3   West       B    130        13
4  North       C    120        12
5  South       C    180        18
6   East       A    220        22
7   West       A    210        21

可以看到上面的数据集描述的是每个地区(Region)卖出的产品(Product),以及当前产品的销售额(Sales),客户质量(Quantity),现在希望对每个地区售卖的产品和销售额做一个统计汇总透视表。例如: 想知道在 West 地区 A 产品的销售额是多少。

透视表代码实现如下:

代码语言:javascript
复制
# 对 Sales 进行求和操作,行索引是Region,列索引是各个 Product,
# 对行和列增加统计 total
In [56]: pd.pivot_table(df, values='Sales', index='Region', 
columns='Product', aggfunc='sum', margins=True, 
margins_name='Total')

Out[56]:
Product      A      B      C    Total
Region
East       220.0  200.0    NaN    420
North      100.0    NaN  120.0    220
South      150.0    NaN  180.0    330
West       210.0  130.0    NaN    340
Total      680.0  330.0  300.0   1310

pivot_table 还支持多个行索引和列,例如行索引是 Region 和 Product ,更改 index 参数即可,代码是实现如下:

代码语言:javascript
复制
In [57]: pd.pivot_table(df, values='Sales', 
index=['Region', 'Product'], aggfunc='sum')
Out[57]:
                Sales
Region Product
East   A          220
       B          200
North  A          100
       C          120
South  A          150
       C          180
West   A          210
       B          130

Pandas 快速上手系列算上本文是更新了 8 篇,其他文章如下:

Python 中的 pandas 快速上手之:概念初识

pandas 快速上手系列:自定义 dataframe

读 DataFrame 不只是读 DataFrame ,还能读出这么多信息

熟练掌握 Pandas 合并术,数据处理不再伤脑筋

玩转 Pandas unique方法,告别数据重复烦恼

谜一样的空值? pandas.fillna 妙招拨云见日

熟练掌握 Pandas 离散差分,数据变化一目了然

学完本系列你可以掌握下面这些能力:

灵活创建和管理数据集,通过自定义创建 DataFrame ,可以方便地将各种格式的数据转化为 Pandas 的数据格式,为后续分析做好准备。

高效数据清洗与预处理,利用fillna、unique等函数,能够快速处理缺失值、去重等数据清洗工作,为模型输入做好数据预处理。

数据融合整合,Pandas 合并方法让您能够方便地横向或纵向合并多个数据源,打通数据壁垒,整合更多维度的信息。

发现数据潜在规律与异常,离散差分等分析手段,可以帮助您观测时间序列等数据的变化趋势,发现潜在规律和异常情况。

多维度数据透视与总结,透视表功能可以按任意的行列索引对数据进行高效切割与聚合,全方位统计各维度的关键信息。

总之,掌握了这些 Pandas 基础和方法后,可以帮你在数据分析、挖掘、决策等各个环节发挥重要作用,助力业务持续优化和创新。本系列属于抛砖引玉,有了这些基础,希望可以在 Pandas 入门到精通的道路上继续前行,而不是放弃!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-05-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 pythonista的日常 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
腾讯云 BI
腾讯云 BI(Business Intelligence,BI)提供从数据源接入、数据建模到数据可视化分析全流程的BI能力,帮助经营者快速获取决策数据依据。系统采用敏捷自助式设计,使用者仅需通过简单拖拽即可完成原本复杂的报表开发过程,并支持报表的分享、推送等企业协作场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档