29、pandas库数据透视表【用Python进行AI数据分析进阶教程】

用Python进行AI数据分析进阶教程29:

pandas库数据透视表


关键词:数据透视表、pivot_table()函数、聚合函数、行索引、列索引

摘要:本文介绍了 Pandas 库中用于数据分析的重要工具——数据透视表(Pivot Table),重点讲解了 pivot_table() 函数的使用方法及其关键参数。数据透视表可以对数据进行分组、聚合和重塑,帮助用户从不同维度分析数据。文中详细说明了 values、index、columns 和 aggfunc 等核心参数的作用,并强调了合理选择行索引、列索引及聚合函数的重要性。同时,还提到了处理缺失值、数据类型和重复索引等常见问题的注意事项。最后通过一个学生分数数据的示例代码,展示了如何创建并解读数据透视表的结果,使读者能够直观理解其应用场景与实现方式。

欢迎订阅
《用Python进行AI数据分析进阶教程》专栏
《AI大模型应用实践进阶教程》专栏
《Python编程知识集锦》专栏
《字节跳动旗下AI制作抖音视频》专栏
《智能辅助驾驶》专栏
《工具软件及IT技术集锦》专栏


在 Pandas 中,数据透视表(Pivot Table)是一种非常强大的数据汇总工具,它可以对数据进行分组、聚合和重塑,帮助我们从不同的角度来分析和理解数据。下面详细介绍 Pandas 库数据透视表的使用、关键点、注意点,并通过示例进行说明。

一、使用方法

Pandas 中使用 pivot_table() 函数来创建数据透视表,其基本语法如下:

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

参数说明

● data:要进行透视操作的 DataFrame。

● values:需要聚合的列名,可以是单个列名或列名列表。

● index:作为行索引的列名,可以是单个列名或列名列表。

● columns:作为列索引的列名,可以是单个列名或列名列表。

● aggfunc:聚合函数,默认为 'mean'(求平均值),也可以是其他函数,如 'sum'(求和)、'count'(计数)等,还可以传入自定义函数。

● fill_value:用于填充缺失值的值。

● margins:是否添加总计行和列,默认为 False

● dropna:是否删除包含缺失值的列,默认为 True

● margins_name:总计行和列的名称,默认为 'All'

二、关键点

1、选择合适的行、列和值

● index 决定了数据透视表的行结构,columns 决定了列结构,values 是要进行聚合计算的列。合理选择这些参数可以让我们从不同的维度查看数据。

2、聚合函数的使用

● 根据具体需求选择合适的聚合函数,如求平均值、求和、计数等。可以传入单个函数,也可以传入多个函数组成的字典或列表。

3、处理缺失值

● 使用 fill_value 参数可以指定用什么值来填充缺失值,避免在分析过程中因缺失值而产生错误。

三、注意点

1、数据类型

● 进行聚合操作的列(values)的数据类型应该是数值型,否则可能会出现错误。

2、内存问题

● 如果数据量非常大,创建数据透视表可能会占用大量内存。在这种情况下,可以考虑分块处理数据或使用其他优化方法。

3、重复索引

● 如果 index 和 columns 组合后存在重复的索引,可能会导致结果不符合预期。需要确保数据的唯一性或使用合适的聚合函数来处理重复数据。

四、示例代码及解释

python脚本

# 导入 pandas 库,它是 Python 中用于数据处理和分析的常用库,别名 pd 方便后续调用
import pandas as pd

# 创建示例 DataFrame
# 定义一个字典 data,用于存储数据
# 字典的键是列名,值是对应列的数据列表
data = {
    # 学生姓名列,包含 Alice 和 Bob 交替出现的数据
    'Name': ['Alice', 'Bob', 'Alice', 'Bob', 'Alice', 'Bob'],
    # 科目列,包含 Math、Science 和 English 三种科目
    'Subject': ['Math', 'Math', 'Science', 'Science', 'English', 'English'],
    # 分数列,对应每个学生在相应科目上的分数
    'Score': [85, 90, 78, 82, 92, 88]
}
# 使用 pandas 的 DataFrame 函数将字典 data 转换为二维表格数据结构
# 存储在变量 df 中,df 是一个 DataFrame 对象
df = pd.DataFrame(data)

# 创建数据透视表
# pd.pivot_table() 是 pandas 中用于创建数据透视表的函数
# df 是要进行数据透视操作的 DataFrame 对象
# values='Score' 表示要对 'Score' 列进行聚合操作,即关注的数值列
# index='Name' 表示将 'Name' 列作为数据透视表的行索引,按学生姓名进行分组
# columns='Subject' 表示将 'Subject' 列作为数据透视表的列索引,按科目进行分组
# aggfunc='mean' 表示使用平均值作为聚合函数,计算每个学生在每个科目上的平均分数
# 最终的透视表结果存储在 pivot_table 变量中
pivot_table = pd.pivot_table(df, values='Score', index='Name', columns='Subject', aggfunc='mean')

# 打印提示信息,表明接下来要输出数据透视表的结果
print("数据透视表结果:")
# 打印数据透视表
# 输出结果是一个新的 DataFrame,行索引是学生姓名,列索引是科目
# 表格中的值是每个学生在对应科目上的平均分数
print(pivot_table)

输出结果解释

数据透视表结果:

Subject English Math Science

Name

Alice    92.0    85.0    78.0

Bob     88.0    90.0    82.0

● 行索引 Name 有两个值 Alice 和 Bob,代表不同的学生。

● 列索引 Subject 有三个值 EnglishMath 和 Science,代表不同的科目。

● 表格中的数值是每个学生在对应科目上的平均分数。例如,Alice 在 English 科目上的平均分数是 92.0,在 Math 科目上是 85.0,在 Science 科目上是 78.0;Bob 在 English 科目上的平均分数是 88.0,在 Math 科目上是 90.0,在 Science 科目上是 82.0。

代码解释

1、创建示例 DataFrame

● 我们创建了一个包含学生姓名(Name)、科目(Subject)和分数(Score)的 DataFrame。

2、创建数据透视表

● pd.pivot_table(df, values='Score', index='Name', columns='Subject', aggfunc='mean')

○ data=df:指定要进行透视操作的 DataFrame。

○ values='Score':表示要对 Score 列进行聚合计算。

○ index='Name':将 Name 列作为行索引,即按照学生姓名进行分组。

○ columns='Subject':将 Subject 列作为列索引,即按照科目进行分组。

○ aggfunc='mean':使用平均值作为聚合函数,计算每个学生在每个科目上的平均分数。

3、打印数据透视表

● 输出的结果是一个新的 DataFrame,行索引是学生姓名,列索引是科目,表格中的值是每个学生在对应科目上的平均分数。

示例输出

数据透视表结果:

Subject English Math Science

Name

Alice     92.0     85.0     78.0

Bob      88.0     90.0     82.0

这个数据透视表清晰地展示了每个学生在不同科目上的平均分数,方便我们进行数据分析和比较。

——The END——


欢迎订阅专栏

序号 专栏名称 说明
1 用Python进行AI数据分析进阶教程 《用Python进行AI数据分析进阶教程》专栏
2 AI大模型应用实践进阶教程 《AI大模型应用实践进阶教程》专栏
3 Python编程知识集锦 《Python编程知识集锦》专栏
4 字节跳动旗下AI制作抖音视频 《字节跳动旗下AI制作抖音视频》专栏
5 智能辅助驾驶 《智能辅助驾驶》专栏
6 工具软件及IT技术集锦 《工具软件及IT技术集锦》专栏

关注我 @理工男大辉郎 获取实时更新

欢迎关注、收藏或转发。
敬请关注 我的
微信搜索公众号:cnFuJH
CSDN博客:理工男大辉郎
抖音号:31580422589

你可能感兴趣的:(pandas,python,人工智能,数据分析)