使用Pandas构建数据透视表

数据分析领域,数据透视表是一种强大的工具,它允许快速地对数据进行汇总和分析。在Microsoft Excel中,数据透视表是最受欢迎的功能之一。但知道吗?可以使用Python中的Pandas库来构建类似的数据透视表。Pandas提供了一个名为pivot_table的函数,用于创建一个整洁的二维表格来汇总特征值。这个数据透视表与Pandas中的groupby()函数类似,将在本文中探讨如何在Python中构建这样的数据透视表,甚至可以使用Pandas数据透视表和绘图库来创建不同的可视化图表。

学习目标

学习如何使用PandasPython中创建数据透视表。

学习如何在创建的数据透视表中对特征使用不同的聚合函数。

学习如何处理Pandas数据透视表中的缺失数据。

目录

  • 测试Pandas数据透视表的样本数据集
  • 使用Pandas构建数据透视表
  • 如何使用索引在数据透视表中对数据进行分组?
  • 如何运行带有多索引的数据透视表?
  • 不同特征的不同聚合函数
  • 使用values参数对特定特征进行聚合
  • 使用columns参数找到特征之间的关系
  • 处理缺失数据
  • 结论
  • 常见问题

测试Pandas数据透视表的样本数据集

数据科学之旅中,可能已经遇到过泰坦尼克号数据集。这是在准备探索项目时首先接触的数据集之一。将使用这个数据集来展示pivot_table函数的有效性。让导入相关的库:

import pandas as pd import numpy as np import matplotlib.pyplot as plt plt.style.use('ggplot')

对于所有忘记了泰坦尼克号数据集是什么样子的人,在这里展示这个数据集!

df = pd.read_csv('drive/My Drive/AV/train.csv') df.head()

将删除多个列,以便于分析数据并展示pivot_table函数的能力:

df.drop(['PassengerId','Ticket','Name'],inplace=True,axis=1)

上述语法从数据集中删除了列名'PassengerId'、'Ticket'和'Name'的列。

使用Pandas构建数据透视表

现在是时候使用Pandas库在Python中构建数据透视表了!将在本文中探索Python数据透视表的不同方面,并从头开始构建一个出色的、灵活的类似Excel的数据透视表。

如何使用索引在数据透视表中对数据进行分组?pivot_table需要数据和一个索引参数。数据是传递给函数的Pandas数据框。索引是允许将数据进行分组的特征。索引特征将作为结果表中的索引出现。通常,分类列用作索引。

将使用'Sex'列作为现在的索引:

table = pd.pivot_table(data=df, index=['Sex'])

可以立即比较两个性别的所有特征值。现在,让可视化这个发现。

# 女性乘客支付的票价明显高于男性乘客。

可以在这里了解更多关于如何可视化数据。

如何运行带有多索引的数据透视表?

甚至可以使用多个特征作为索引来对数据进行分组。这增加了结果表的粒度,并且可以更具体地获得发现:

table = pd.pivot_table(df, index=['Sex', 'Pclass'])

使用数据集上的多个索引使能够得出结论,即女性和男性乘客的票价差异在泰坦尼克号的每个Pclass上都是有效的。

不同特征的不同聚合函数

表中显示的值是聚合函数对特征数据进行汇总的结果。聚合函数是pivot_table应用到分组数据的聚合函数。默认情况下,它是np.mean(),但也可以为不同的特征使用不同的聚合函数!只需提供一个字典作为输入到聚合函数参数,特征名称作为键,相应的聚合函数作为值。

table = pd.pivot_table(df, index=['Sex', 'Pclass'], aggfunc={'Age': np.mean, 'Survived': np.sum})

结果表在使用不同的聚合函数对不同特征进行聚合时更有意义。

使用values参数对特定特征进行聚合

但是在聚合什么?可以告诉Pandas在聚合函数上应用的特征(s)在values参数中。values参数是告诉函数聚合哪些特征的地方。这是一个可选字段,如果不指定这个值,那么函数将聚合数据集中的所有数值特征:

table = pd.pivot_table(df, index=['Sex', 'Pclass'], values=['Survived'], aggfunc=np.mean)

泰坦尼克号上乘客的生存率随着Pclass的降低而降低,无论性别如何。此外,任何给定的Pclass中,男性乘客的生存率都低于女性乘客。

使用columns参数找到特征之间的关系

使用多个特征作为索引是可以的,但是使用一些特征作为列将帮助直观地理解它们之间的关系。此外,通过结合pivot_table的columns参数,结果表总是可以更好地查看。

table = pd.pivot_table(df, index=['Sex'], columns=['Pclass'], values=['Survived'], aggfunc=np.sum)

处理缺失数据

table = pd.pivot_table(df, index=['Sex', 'Survived', 'Pclass'], columns=['Embarked'], values=['Age'], aggfunc=np.mean) table = pd.pivot_table(df, index=['Sex', 'Survived', 'Pclass'], columns=['Embarked'], values=['Age'], aggfunc=np.mean, fill_value=np.mean(df['Age']))
  • 可以使用pivot_table函数在Pandas中创建Python数据透视表。
  • 可以在pivot_table函数中传递不同的参数来聚合数据、处理缺失值等。
Q1. 如何在Pandas中创建数据透视表?
要创建Pandas中的数据透视表,请使用pivot_table()函数。指定数据、索引、列和值。例如:pd.pivot_table(data, index='row', columns='column', values='value')。
Q2. pandas pivot和pandas pivot table之间有什么区别?
Pandas中pivot和pivot_table的区别在于pivot不进行聚合就重塑数据,而pivot_table允许数据聚合并支持sum、mean等函数。
Q3. pandas中pivot_table()函数的目的是什么?
Pandas中pivot_table()函数的目的是汇总和聚合数据,使长数据能够转换为汇总的、交叉制表的形式。
Q4. pandas中pivot的等效函数是什么?
Pandas中pivot的等效函数是pivot()函数,它基于列值重塑数据而不执行聚合。
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485