详解pandas.DataFrame.pivot()(创建透视表)函数使用方法

  • Post category:Python

Pandas是Python中数据处理与分析的利器。DataFrame是其中最常用的数据结构,而pivot是其最常用的之一的方法,本攻略将详细介绍pivot的作用与使用方法。

1. 什么是pivot()方法

pivot()是pandas.DataFrame的一个方法,用于将DataFrame的数据透视成新的形式,即将原来行的数据转化为新的列。pivot()方法的基本语法为:

DataFrame.pivot(index=None, columns=None, values=None)

其中参数说明如下:

  • index: 透视表的行索引
  • columns: 透视表的列索引
  • values: 透视表的值

2. pivot()的使用方法

使用pivot()方法需要先构建一个pandas.DataFrame对象,下面分别以两组数据为例说明pivot()的使用方法。

2.1 示例数据一

首先,构造一个DataFrame示例数据:

import pandas as pd

data = [
    ['Tom', 'Math', 80],
    ['Tom', 'English', 70],
    ['Jack', 'Math', 90],
    ['Jack', 'English', 85],
    ['Mary', 'Math', 81],
    ['Mary', 'English', 89],
]
df = pd.DataFrame(data, columns=['Name', 'Subject', 'Score'])

构造出的DataFrame df为:

Name Subject Score
0 Tom Math 80
1 Tom English 70
2 Jack Math 90
3 Jack English 85
4 Mary Math 81
5 Mary English 89

现在,我们使用pivot方法将其透视成以下形式:

Name English Math
0 Tom 70 80
1 Jack 85 90
2 Mary 89 81

运用pivot()方法的代码如下:

new_df = df.pivot(index='Name',columns='Subject',values='Score')

让我们分别分析其中的参数:

  • index='Name'中,我们以Name为行索引。
  • columns='Subject'中,我们以Subject为列索引。
  • values='Score'中,我们以Score作为透视出的值。

2.2 示例数据二

首先,构造一个DataFrame示例数据:

data = [
    ['20220101', 'A', 100],
    ['20220101', 'B', 150],
    ['20220102', 'A', 120],
    ['20220102', 'B', 180],
    ['20220103', 'A', 130],
    ['20220103', 'B', 190],
    ['20220104', 'A', 140],
    ['20220104', 'B', 200],
]
df = pd.DataFrame(data, columns=['Date', 'Type', 'Value'])

构造出的DataFrame df为:

Date Type Value
0 20220101 A 100
1 20220101 B 150
2 20220102 A 120
3 20220102 B 180
4 20220103 A 130
5 20220103 B 190
6 20220104 A 140
7 20220104 B 200

现在我们构造出了一个包含日期、类型以及数值的DataFrame。接下来,我们使用pivot()方法将其透视成以下形式:

Date A B
0 20220101 100 150
1 20220102 120 180
2 20220103 130 190
3 20220104 140 200

运用pivot()方法的代码如下:

new_df = df.pivot(index='Date',columns='Type',values='Value')

让我们分别分析其中的参数:

  • index='Date'中,我们以Date为行索引。
  • columns='Type'中,我们以Type为列索引。
  • values='Value'中,我们以Value作为透视出的值。

3. pivot()方法的参数

除了上述参数之外,pivot()方法中还有以下两个参数:

  • aggfunc:对于重复的值,aggfunc用于进行聚合操作,可使用numpy中的聚合函数,如sum、mean、max、min等,默认为numpy.mean。
  • fill_value:用于填充缺失值。

例如,我们可以在示例一中加多一个aggfunc的参数,来实现用sum来对重复的Score值进行聚合:

new_df = df.pivot(index='Name',columns='Subject',values='Score',aggfunc='sum')

4. pivot()方法的注意事项

  • 每个组合的重复值必须是唯一的,否则会出现错误。
  • 接受的值应该是一个列表或者是一个返回列表的函数。

5. 总结

通过以上两个示例,我们学习了关于pivot()方法的以下知识点:

  • pivot()方法用于将DataFrame的数据透视成新的形式,即将原来行的数据转化为新的列。
  • 使用pivot()方法需要构建一个pandas.DataFrame对象,接着使用pivot()方法并传递参数index、columns和values透视数据。
  • pivot()方法还有两个参数aggfunc和fill_value。
  • 在使用pivot()方法时需要注意每个组合的重复值必须是唯一的,否则会出现错误。

如果你还有疑问或者想要了解更多有关pandas的相关技巧,请移步至官方文档。