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的相关技巧,请移步至官方文档。