Python Pandas pivot()函数

334 阅读5分钟

SYNTAX

pandas.pivot(data, index=None, columns=None, values=None)

返回值pivot() 函数的返回值是一个按索引/列值组织的重塑的DataFrame

背景介绍

直接引用Pandas文档网站的内容。

/列值。这个函数不支持数据聚合。如果有多个值,它们将导致列中的多索引。

本文将分别深入探讨这个函数的每个参数。

开始使用

记住,在每个代码片段的顶部添加所需的启动代码。这个代码段将使本文中的代码能够无误地运行。

本文使用的数据结构是一个由键(列名)和相关(列表)组成的列表字典

必要的启动代码

import pandas as pd

staff = {'FName':  ['Clare', 'Micah', 'Ben', 'Mac', 'Emma'], 
         'EID':    [100, 101, 102, 103, 104], 
         'Job':    ['Designer I', 'Data Scientist', 'Developer', 'Designer II', 'Manager'],
         'Age':    [19, 23, 21, 27, 36],
         'Salary': [87343, 94123, 96543, 65232, 102375]}

数据 "参数

melt() 函数data 参数是一个DataFrame。这个参数可以是以下数据类型之一,或者是可以转换为DataFrame的其他数据类型。

  • CSV
  • 列表字典(在本文中使用)
  • 图元的字典,以及更多

如果DataFrame 是空的,将显示以下输出。

df = pd.DataFrame()
print(df)

输出

Empty DataFrame
Columns: []
Index: []

如果DataFrame包含工作人员,输出将类似于下面的表格。格式会有所不同,取决于用于运行代码的IDE。

代码

df = pd.DataFrame(staff)

print(df)

输出

名称雇员身份工作年龄薪资
0尹恩惠100设计师I1987343
1米迦101数据科学家2394123
2102开发商2196543
3猕猴桃103设计师II2765232
4艾玛104经理36102375

注意:在本文中的所有例子中,使用工作人员的数据框架。

  • 2. "索引 "参数

melt()index参数不是必需的。如果使用,这些列会创建一个新的索引。如果为空,将显示默认的索引编号系统。该参数可以是以下数据类型之一。

  • 字符串
  • 对象
  • 字符串的列表
  • 索引名称的列表

注意:所有分配给索引参数的数据必须包含唯一的值。如果不是,就会出现 ValueError发生。

在这个例子中,索引参数是EIDJob列。 列参数是必需的。如果是空的,将显示整个DataFrame。如果缺失,则 类型错误将会发生。

代码

df_index = df.pivot(index=['EID', 'Job'], columns=[] )

print(df_index)

输出

在这个代码例子中,index参数包含一个列名列表。它们在左边显示的顺序与在列表中输入的顺序相同:不是原始数据结构的顺序。

staff = {'FName': ['Clare', 'Micah', 'Ben', 'Mac', 'Emma'],

'eid': [100, 101, 102, 103, 104],

'工作'。['一级设计师', '数据科学家', '开发人员', '二级设计师', '经理'],

'年龄': [19, 23, 21, 27, 36],

'薪资':[87343, 94123, 96543, 65232, 102375]}

具有相关数据的其余列将在右边显示(FName, Age, Salary)。

EID工作姓氏年龄工资
100设计师I尹明善1987343
101数据科学家米加2394123
102开发人员2196543
103设计师II硕士2765232
104经理艾玛36102375
  • "*列 "*参数

melt() columns参数是必须的。该参数可以是以下数据类型之一。

  • 字符串
  • 对象
  • 字符串的列表
  • 索引名称的列表

如果是空的(如上图所示),整个DataFrame都会显示。如果缺失,则 TypeError发生。

代码

df_cols = df.pivot(index=['EID', 'Job', 'Salary'], columns=['FName'] )

print(df_cols)

输出

在这个例子中,索引列将显示在左边。其顺序与上述参数中列出的顺序相同。

传递给参数*(FNames*)的列表作为小标题显示文本。其余的小标题是该列的值。

年龄列是两个参数中唯一省略的列。这一列成为表格的主标题。

原始数据结构中的Age数据将显示为浮点。

年龄
F名称克莱尔艾玛麦克米加
身份证工作机会薪资
100设计师I8734319.0ǞǞǞǞǞǞ
101数据科学家94123ǞǞǞǞǞǞǞǞǞǞǞǞ23.0
102开发者9654321.0ǞǞǞǞǞǞǞǞǞǞǞǞ
103设计师II65232ǞǞǞǞǞǞ27.0瑙鲁
104经理102375瑙鲁经理36.0瑙鲁价值
  • *值 "*参数

这个函数的参数不是必须的。该参数可以是以下数据类型之一。

  • 字符串
  • 对象
  • 前面的列表

该参数使用列来填充DataFrame值。如果该参数为空,所有剩余的列都将显示。

在这个例子中,原始数据结构中的薪资数据将显示为浮点数。

代码

df_values = df.pivot(index=['EID', 'Job', 'Age'], columns=['FName'], values=['Salary'])

print(df_values)

工资
姓氏克莱尔邓丽君米加
身份证工作机会年龄
100设计师I1987343.0瑙鲁94123.0
101数据科学家23ǞǞǞǞǞǞǞǞǞǞǞǞ
102开发者2196543.0ǞǞǞǞǞǞǞǞǞǞǞǞ
103设计师 II27纳恩ǞǞǞ65232.0
104经理36瑙鲁毋庸置疑102375.0ǞǞǞNaN

The postPython Pandas pivot() Functionfirst appeared onFinxter.