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

  • Post category:Python

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

介绍

Pandas是一个强大的数据分析工具,它提供了多种数据操作功能,包括数据过滤、变换、聚合和透视表等功能。其中,透视表(pivot table)功能在数据分析中非常常用,它能够快速方便地将原始数据转换为指定格式。

本文将使用Python中的pandas包,结合实际数据,详细介绍如何使用pivot_table功能。

pivot_table概述

pivot_table是pandas中实现透视表功能的函数,它可以轻松地根据数据的标签进行数据透视。默认情况下,pivot_table可以根据指定的列进行数据聚合计算,比如求和、均值、计数等操作。同时,pivot_table还支持自定义聚合函数,可以方便地应对更加复杂的需求。

示例

假设我们有一个销售订单数据,包括订单号、产品类型、销售日期和销售金额等信息,如下所示:

订单号 产品类型 销售日期 销售金额
001 A 2021/1/1 100
002 A 2021/1/2 150
003 B 2021/1/2 200
004 C 2021/1/3 120
005 A 2021/1/3 180

现在我们需要根据产品类型和销售日期对数据进行透视分析,得到每种产品在每个日期的销售金额总和。

示例1:默认情况

默认情况下,pivot_table函数将根据指定的行和列进行数据聚合计算,并返回一个新的透视表。

import pandas as pd

# 读取数据
df = pd.read_excel('sales.xlsx')

# 生成透视表
pv = pd.pivot_table(df, values='销售金额', index=['产品类型'], columns=['销售日期'], aggfunc=sum)

# 输出结果
print(pv)

输出结果如下:

销售日期  2021/1/1  2021/1/2  2021/1/3
产品类型                           
A         100.0     150.0     180.0
B           NaN     200.0       NaN
C           NaN       NaN     120.0

可以看到,透视表按照产品类型和销售日期分组,计算每个组的销售金额总和,并生成了新的透视表。这时候,NaN表示对应的组没有销售,因此销售金额为0。

示例2:自定义聚合函数

默认情况下,pivot_table函数对数据聚合时,采用的是sum函数。如果需要使用其他聚合函数,可以通过aggfunc参数指定自定义聚合函数。

import pandas as pd

# 读取数据
df = pd.read_excel('sales.xlsx')

# 自定义聚合函数:计算销售金额的平均值
def mean_sales(x):
    return x.mean()

# 生成透视表
pv = pd.pivot_table(df, values='销售金额', index=['产品类型'], columns=['销售日期'], aggfunc=mean_sales)

# 输出结果
print(pv)

输出结果如下:

销售日期  2021/1/1  2021/1/2  2021/1/3
产品类型                           
A         100.0     150.0     180.0
B           NaN     200.0       NaN
C           NaN       NaN     120.0

可以看到,自定义聚合函数mean_sales计算了每个组销售金额的平均值,并生成了新的透视表。这时候,NaN仍然表示对应的组没有销售,因此平均销售金额为0。

总结

pivot_table是pandas中实现透视表功能的函数,可以轻松地根据数据的标签进行数据透视。默认情况下,pivot_table可以根据指定的列进行数据聚合计算,并返回一个新的透视表。同时,pivot_table还支持自定义聚合函数,可以方便地应对更加复杂的需求。在数据分析中,pivot_table是一个非常强大的工具,熟练掌握它的使用方法,可以大大提高数据分析的效率。