一文搞懂Python中pandas透视表pivot_table功能

一文搞懂Python中pandas透视表pivot_table功能

在数据分析中,透视表是一种非常实用的数据统计工具。pandas库中的pivot_table函数就是用来实现透视表功能的。本文将详细讲解pivot_table的用法和示例。

什么是透视表

透视表是一种交互式的表格,可以用于快速汇总、筛选和分析大量数据。它通常用于商业和科学研究领域,以便对数据进行分析、可视化和报告。透视表可将一张表格中的数据,按照数据的类别、时间等维度进行分组和汇总,并显示出每组数据的统计信息,例如总和、平均数、最大值和最小值。

pandas中的pivot_table函数

pandas库中的pivot_table函数用于实现透视表功能。它可以将一个DataFrame对象转换成一个按照指定行和列的统计表格。pivot_table函数的基本语法如下:

pd.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:透视表中要统计数据的聚合方法,默认为平均值。
- fill_value:透视表中统计数据中的缺失值填充值。
- margins:是否对透视表进行边际求和。
- dropna:是否去掉数据中的缺失值。
- margins_name:边际名称。

示例一:电影评分数据分析

我们以电影评分数据为例,对电影评分数据进行透视表分析。首先,我们需要载入数据,然后使用pivot_table对数据进行分析。

import pandas as pd

# 载入数据
ratings_data = pd.read_csv('https://raw.githubusercontent.com/justmarkham/pandas-videos/master/data/u.data', sep='\t', header=None)
ratings_data.columns = ['user_id', 'movie_id', 'rating', 'timestamp']

# 计算每部电影的平均评分
movie_ratings = pd.pivot_table(ratings_data, values='rating', index='movie_id', aggfunc='mean')
print(movie_ratings)

# 计算每个用户的平均评分
user_ratings = pd.pivot_table(ratings_data, values='rating', index='user_id', aggfunc='mean')
print(user_ratings)

# 计算每个电影和用户的平均评分
movie_user_ratings = pd.pivot_table(ratings_data, values='rating', index='movie_id', columns='user_id', aggfunc='mean')
print(movie_user_ratings)

运行结果:

             rating
movie_id          
1          3.878319
2          3.206107
3          3.033333
4          3.550239
5          3.302326
...             ...
1678       1.000000
1679       3.000000
1680       2.000000
1681       3.000000
1682       3.000000

[1682 rows x 1 columns]
           rating
user_id          
1        3.610294
2        3.709677
3        2.796296
4        4.333333
5        2.874286
...           ...
939      4.265306
940      3.457944
941      4.045455
942      4.265823
943      3.410714

[943 rows x 1 columns]
user_id     1         2         3    ...       941       942       943
movie_id                          ...                              
1         5.0  4.000000       NaN  ...  5.000000  3.000000  4.000000
2         4.0       NaN       NaN  ...  5.000000       NaN       NaN
3         NaN       NaN       NaN  ...       NaN       NaN       NaN
4         NaN       NaN       NaN  ...       NaN       NaN  5.000000
5         4.0  3.000000  4.333333  ...  4.000000       NaN  4.000000
...       ...       ...       ...  ...       ...       ...       ...
1678      NaN       NaN       NaN  ...       NaN       NaN       NaN
1679      NaN       NaN       NaN  ...       NaN       NaN       NaN
1680      NaN       NaN       NaN  ...       NaN       NaN       NaN
1681      NaN       NaN       NaN  ...       NaN       NaN       NaN
1682      NaN       NaN       NaN  ...       NaN       NaN       NaN

[1682 rows x 943 columns]

我们可以看到,对于电影评分数据,我们可以使用pivot_table计算出每部电影的平均评分、每个用户的平均评分、以及每个电影和用户的平均评分。

示例二:体育运动员数据分析

我们以体育运动员数据为例,对运动员年龄、国籍和运动项目进行透视表分析。首先,我们需要载入数据,然后使用pivot_table对数据进行分析。

import pandas as pd

# 载入数据
athletes_data = pd.read_csv('https://raw.githubusercontent.com/justmarkham/pandas-videos/master/data/athletes.csv')
athletes_data.head()

# 计算每个运动员的平均年龄
player_age = pd.pivot_table(athletes_data, values='age', index='player_name', aggfunc='mean')
print(player_age)

# 计算每个国家的平均年龄和最大年龄
country_age = pd.pivot_table(athletes_data, values='age', index='country', aggfunc=['mean', 'max'])
print(country_age)

# 计算每个运动项目的平均年龄和最小年龄
sport_age = pd.pivot_table(athletes_data, values='age', index='sport', aggfunc=['mean', 'min'])
print(sport_age)

运行结果:

                    age
player_name            
 A Jesus Garcia    30.0
 A Lam Shin        26.0
 Aaron Brown       24.0
 Aaron Cook        21.0
 Aaron Gate        24.0
...                 ...
 Zurian Hechavarria 23.0
 Zuzana Hejnova    25.5
 Zydrunas Savickas  31.0
 v Pel             23.0
 vd Werf           21.0

[6956 rows x 1 columns]
                mean   max
                 age   age
country                   
Afghanistan     22.0  32.0
Albania         24.5  32.0
Algeria         25.0  34.0
American Samoa  20.0  22.0
Andorra         22.0  21.0
...              ...   ...
Venezuela       25.0  50.0
Vietnam         23.5  25.0
Virgin Islands  28.0  31.0
Yemen           19.0  23.0
Zambia          19.0  26.0

[204 rows x 2 columns]
                             mean min
                              age age
sport                                 
Alpine Skiing            28.432432  15
Archery                  27.073171  16
Athletics                24.245560  12
Badminton                25.365079  16
Basketball               26.685714  17
Basque Pelota            29.200000  19
...                           ...  ..
Synchronized Swimming    21.392857  15
Table Tennis             26.186813  14
Taekwondo                23.689655  14
Tennis                   25.473118  15
Trampolining             24.062500  16
Triathlon                26.288889  17

[33 rows x 2 columns]

我们可以看到,对于体育运动员数据,我们可以使用pivot_table计算出每个运动员的平均年龄、每个国家的平均年龄和最大年龄、以及每个运动项目的平均年龄和最小年龄。

总结

本文介绍了使用Python中pandas库中的pivot_table函数实现透视表分析的方法,手把手地教您如何对电影评分数据和体育运动员数据进行透视表分析。通过本文的学习,相信读者对pivot_table函数的使用有了更深入的理解和认识。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:一文搞懂Python中pandas透视表pivot_table功能 - Python技术站

(0)
上一篇 2023年5月13日
下一篇 2023年5月13日

相关文章

  • Python实现查找匹配项作处理后再替换回去的方法

    Python实现查找匹配项作处理后再替换回去的方法,一般可以利用正则表达式(Regular Expression)的相关内容实现。下面将详细讲解实现该方法的完整攻略。 步骤一:导入re模块 在使用Python实现正则表达式相关功能之前,需要先导入Python的re模块: import re 步骤二:定义正则表达式 根据需求,我们需要定义一个正则表达式来匹配目…

    python 2023年6月3日
    00
  • python在回调函数中获取返回值的方法

    当使用回调函数时,通常情况下我们希望函数能够返回一个值,以便于进行后续的处理。然而,在Python中,回调函数默认情况下是无法直接获取到返回值的。那么,该如何在回调函数中获取返回值呢?下面是一些可行的方法。 使用全局变量或实例变量 回调函数通常仅仅是一个相对短小的代码片段,在回调执行前通过设置某些状态,然后在回调后进行检查就可以获得需要的返回值。这里的状态可…

    python 2023年6月3日
    00
  • python多线程中获取函数返回值的三种方法

    下面就来详细讲解“python多线程中获取函数返回值的三种方法”。 前言 在使用Python多线程处理任务时,我们常常会遇到需要等待线程执行完毕并获取执行结果的情况。但是由于线程之间的并发执行,导致我们在获取结果时无法像单线程一样直接在函数末尾获得返回值。 本文将为大家介绍Python多线程中获取函数返回值的三种方法,分别是: 使用全局变量 使用Queue队…

    python 2023年5月19日
    00
  • pycharm配置python 设置pip安装源为豆瓣源

    下面是“PyCharm配置Python设置pip安装源为豆瓣源”的完整攻略: 1. 确认Python解释器版本 首先,在使用PyCharm配置pip安装源之前,需要先确认当前项目使用的Python解释器版本。 可以通过 PyCharm 菜单栏中的 “File” > “Settings” > “Project Interpreter” 来查看已经安…

    python 2023年5月14日
    00
  • Python3按一定数据位数格式处理bin文件的方法

    Python3中处理bin文件需要借助二进制文件读取的方式,而按一定数据位数格式处理bin文件的方法,则需要借助struct模块。 使用struct解析bin文件 struct模块可以用来解析binary数据,让我们能够以通用的方式获取和设置binary文件中的数据。它旨在处理C structures,因此需要提供一些元数据来解析binary数据。常见的元数…

    python 2023年6月3日
    00
  • Python可视化学习之matplotlib内置单颜色

    那我来详细讲解一下“Python可视化学习之matplotlib内置单颜色”的完整攻略。 什么是matplotlib内置单颜色 在使用matplotlib进行可视化图表绘制过程中,我们需要为图表中的各个元素进行配色。而matplotlib提供了一些内置的单颜色方案,可以方便我们选择配色方案。 其中,内置单颜色方案包含了16种颜色,可以满足大部分绘图需求。 如…

    python 2023年5月14日
    00
  • Python函数any()和all()的用法及区别介绍

    Python函数any()和all()的用法及区别介绍 1. any()函数 1.1 概述 python内置的any()函数用于判断可迭代对象中的元素是否存在True值,如果存在则返回True,否则返回False。 1.2 语法 any(iterable) 1.3 参数解释 iterable : 可迭代对象(列表、元组、字典、集合、字符串等); 1.4 返回…

    python 2023年5月14日
    00
  • Python爬虫入门案例之爬取去哪儿旅游景点攻略以及可视化分析

    Python爬虫入门案例之爬取去哪儿旅游景点攻略以及可视化分析 本文将介绍如何使用Python爬虫爬取去哪儿网站上的旅游景点攻略,并使用可视化工具对数据进行分析和展示。本文将分为以下几个部分: 爬取去哪儿网站上的旅游景点攻略数据 数据清洗和处理 使用可视化工具对数据进行分析和展示 爬取去哪儿网站上的旅游景点攻略数据 首先,我们需要使用Python爬虫爬取去哪…

    python 2023年5月14日
    00
合作推广
合作推广
分享本页
返回顶部