【Pandas】pandas.pivot_table详解与实战应用:数据透视表的高级用法,用于创建数据透视表,支持多种聚合操作和复杂的数据处理

在数据分析和处理过程中,数据透视表是一个非常强大的工具,可以帮助我们汇总和重塑数据。pandas.pivot_table 是 Pandas 提供的一个函数,用于创建数据透视表,支持多种聚合操作和复杂的数据处理。本文将详细介绍 pandas.pivot_table 的用途和用法,包括其参数详解、示例代码以及进阶使用技巧。


🧑 博主简介:现任阿里巴巴嵌入式技术专家,15年工作经验,深耕嵌入式+人工智能领域,精通嵌入式领域开发、技术管理、简历招聘面试。CSDN优质创作者,提供产品测评、学习辅导、简历面试辅导、毕设辅导、项目开发、C/C++/Java/Python/Linux/AI等方面的服务,如有需要请站内私信或者联系任意文章底部的的VX名片(ID:gylzbk

💬 博主粉丝群介绍:① 群内初中生、高中生、本科生、研究生、博士生遍布,可互相学习,交流困惑。② 热榜top10的常客也在群里,也有数不清的万粉大佬,可以交流写作技巧,上榜经验,涨粉秘籍。③ 群内也有职场精英,大厂大佬,可交流技术、面试、找工作的经验。④ 进群免费赠送写作秘籍一份,助你由写作小白晋升为创作大佬。⑤ 进群赠送CSDN评论防封脚本,送真活跃粉丝,助你提升文章热度。有兴趣的加文末联系方式,备注自己的CSDN昵称,拉你进群,互相学习共同进步。

在这里插入图片描述

在这里插入图片描述

1.简介 📘

在数据分析和处理过程中,数据透视表是一个非常强大的工具,可以帮助我们汇总和重塑数据。pandas.pivot_table 是 Pandas 提供的一个函数,用于创建数据透视表,支持多种聚合操作和复杂的数据处理。本文将详细介绍 pandas.pivot_table 的用途和用法,包括其参数详解、示例代码以及进阶使用技巧。

2.什么是pandas.pivot_table 🧩

pandas.pivot_table 是 Pandas 提供的一个函数,用于创建数据透视表。与 pandas.pivot 不同的是,pivot_table 函数可以对数据进行聚合操作,如计算均值、总和、计数等,非常适合用于数据汇总和多维度分析。

3.为什么使用pandas.pivot_table 🤔

使用 pandas.pivot_table 有以下几个优点:

  1. 多种聚合操作:可以对数据进行计数、求和、平均等多种聚合操作。
  2. 数据分析:可以根据不同的维度对数据进行汇总分析,帮助你更好地理解数据。
  3. 灵活性:支持多个索引、多个聚合函数和复杂的数据处理,灵活性非常高。

4.pandas.pivot_table方法详解 🔍

4.1 函数签名 🖊️

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)

4.2 参数解释 📝

  • data: 类型:DataFrame。说明:待转换的 DataFrame。
  • values: 类型:str or object or a list of str,default None。说明:需要进行聚合操作的列。
  • index: 类型:str or object or a list of str,default None。说明:设置用于分组的列。
  • columns: 类型:str or object or a list of str,default None。说明:设置用于生成新 DataFrame 列的列。
  • aggfunc: 类型:function, list of functions, dict, or a string,default ‘mean’。说明:指定聚合函数,例如 ‘mean’, ‘sum’, ‘count’ 等。
  • fill_value: 类型:scalar,default None。说明:用于填补缺失值的值。
  • margins: 类型:bool,default False。说明:是否添加行列的总计。
  • dropna: 类型:bool,default True。说明:是否丢弃含有缺失值的列。
  • margins_name: 类型:str,default ‘All’。说明:聚合值的名称。
  • observed: 类型:bool,default False。说明:对于分类变量,是否仅显示出现过的分类。
  • sort: 类型:bool,default True。说明:是否对结果进行排序。

4.3 返回值 📤

返回一个重塑后的 DataFrame,其行和列根据指定的索引和列进行转换,同时对指定列进行聚合操作。

4.4 示例代码 👨‍💻

4.4.1 基本用法 💾

首先,我们来看看一个如何将长格式的数据通过透视表进行聚合的基础例子。

import pandas as pd

# 创建一个示例 DataFrame
df = pd.DataFrame({
    'Date': ['2021-01-01', '2021-01-01', '2021-01-02', '2021-01-02'],
    'City': ['New York', 'Los Angeles', 'New York', 'Los Angeles'],
    'Temperature': [30, 25, 28, 24],
    'Humidity': [55, 65, 50, 70]
})

# 使用 pandas.pivot_table 转换数据
pivot_table_df = pd.pivot_table(df, values='Temperature', index='Date', columns='City', aggfunc='mean')

print(pivot_table_df)

以上代码将 Date 作为行索引,将 City 作为列索引,并计算 Temperature 列的平均值。输出结果如下:

City        Los Angeles  New York
Date
2021-01-01         25.0      30.0
2021-01-02         24.0      28.0

4.4.2 使用多个聚合函数 ⏩

接下来,我们可以为透视表设置多个聚合函数,以便对数据进行更复杂的统计分析。

# 使用多个聚合函数
pivot_table_multi_agg = pd.pivot_table(df, values=['Temperature', 'Humidity'], index='Date', columns='City', aggfunc={'Temperature': ['mean', 'max'], 'Humidity': 'mean'})

print(pivot_table_multi_agg)

以上代码将 Date 作为行索引,将 City 作为列索引,并计算 Temperature 列的平均值和最大值,以及 Humidity 列的平均值。输出结果如下:

           Temperature            Humidity
                  mean   max       mean
City        Los Angeles New York Los Angeles New York Los Angeles New York
Date
2021-01-01      25.0     30.0           25       30.0        65.0       55.0
2021-01-02      24.0     28.0           24       28.0        70.0       50.0

4.5 进阶使用 🚀

4.5.1 填补缺失值 💨

在生成的透视表中,可能会存在缺失值。可以使用 fill_value 参数来填补这些缺失值。

# 使用 pandas.pivot_table 转换数据,并填补缺失值
pivot_table_filled = pd.pivot_table(df, values='Temperature', index='Date', columns='City', aggfunc='mean', fill_value=0)

print(pivot_table_filled)

填补后的透视表如下:

City        Los Angeles  New York
Date
2021-01-01           25        30
2021-01-02           24        28

4.5.2 添加合计行和列 📜

可以通过 margins 参数来添加合计行和列,便于查看统计数据的总体情况。

# 使用 pandas.pivot_table 转换数据,并添加合计行和列
pivot_table_with_margins = pd.pivot_table(df, values='Temperature', index='Date', columns='City', aggfunc='mean', margins=True, margins_name='Total')

print(pivot_table_with_margins)

添加了合计行和列后的透视表如下:

City        Los Angeles  New York  Total
Date
2021-01-01         25.0      30.0   27.5
2021-01-02         24.0      28.0   26.0
Total              24.5      29.0   26.75

5.注意事项 ⚠️

  1. 数据重复:确保数据没有重复项,或者在透视之前对数据进行预处理。
  2. 缺失值处理:生成的透视表可能会含有缺失值,考虑使用 fill_value 参数进行填补。
  3. 聚合函数:选择合适的聚合函数,以满足统计分析的需求。

6.参考资料 📚

7.结论 🏁

Pandas 的 pandas.pivot_table 函数提供了一种高效且灵活的方式,将 DataFrame 从长格式转换为宽格式,并对数据进行多种聚合操作。通过本文详细的讲解和示例,相信你已经掌握了 pandas.pivot_table 的基础使用方法和进阶技巧,有助于更好地进行数据重塑和分析。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

I'mAlex

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值