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

yizhihongxing

一文搞懂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 中获取整点凌晨时间戳可以通过以下步骤完成: 获取当前时间的时间戳。 将当前时间戳转化为当前时间,获取当前日期、小时、分和秒。 将当前日期、小时、分和秒中的分和秒设为 0(即整点时间)。 将处理后的时间转为时间戳即可。 下面是示例代码: import time # 获取当前时间戳 current_timestamp…

    python 2023年6月2日
    00
  • 如何在Python中插入数据到Microsoft SQL Server数据库?

    以下是如何在Python中插入数据到Microsoft SQL Server数据库的完整使用攻略,包括安装pyodbc库、连接Microsoft SQL Server数据库、插入数据等步骤。同时,提供了两个示例以便更好理解如何在Python中插入数据到Microsoft SQL Server数据库。 步骤1:安装pyodbc库 在Python中,我们可以使用…

    python 2023年5月12日
    00
  • Python安装Bs4及使用方法

    Python安装Bs4及使用方法 BeautifulSoup是Python中一个非常流行的HTML和XML解析库,可以帮助我们更方便地解析网页。本文将介绍如何安装Bs4库,并演示如何使用它来解析HTML文档。 安装Bs4库 在使用Bs4库之前,需要先安装它。以下是一个示例代码,演示如何使用pip安装Bs4库: pip install beautifulsou…

    python 2023年5月15日
    00
  • python中数据爬虫requests库使用方法详解

    当然,下面是对《python中数据爬虫requests库使用方法详解》的完整攻略: 1. requests库简介 requests库是Python的一个常用库,用来向网站发送HTTP请求。它的优点是简单易用,功能强大,支持HTTP/1.0和HTTP/1.1。requests库还支持HTTP代理,Cookie,HTTPS等功能。 2. requests库使用方…

    python 2023年5月14日
    00
  • Python pygame新手入门基础教程

    首先,讲一下什么是Python pygame。 什么是Python pygame Python pygame是一个基于Python语言的跨平台开源游戏开发库。它提供了一系列的API,开发者可以通过这些API来实现2D游戏或图形应用程序。 安装Python pygame 在使用Python pygame之前,需要先安装Python和pygame。 安装Pyth…

    python 2023年5月20日
    00
  • python图片合成的示例

    针对python图片合成的示例,以下是我总结的完整攻略。 1. 安装必要的python库 在进行图片合成前,需要安装pillow库来操作图片。可通过以下命令进行安装: pip install pillow 2. 图片的操作 打开图片 可以通过使用PIL库的Image模块,使用open()函数打开指定路径上的图片文件,具体示例代码如下: from PIL im…

    python 2023年6月6日
    00
  • python实现文件分片上传的接口自动化

    实现文件分片上传的接口自动化是一个比较复杂的过程,需要考虑到很多细节。下面是一个基于 Python 的完整攻略: 1. 确定请求参数及接口地址 在使用 Python 实现文件分片上传的接口自动化之前,需要先了解这个接口的请求参数及接口地址,通常这些信息都可以在接口文档中找到。需要注意的是,在文件分片上传的过程中,涉及到的请求参数比较复杂,需要特别关注这些参数…

    python 2023年6月3日
    00
  • python命令行工具Click快速掌握

    Python命令行工具Click快速掌握 简介 Click是Python编写命令行工具的强大库。它提供了简单易用的API,帮助你快速编写出自己的命令行工具。本文将介绍Click的基本用法、命令行参数的处理以及自定义帮助信息等方面的内容。 安装 你可以使用pip来安装Click库: pip install click 基本使用 使用Click创建命令行工具分为…

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