Pandas是一个开源的Python数据分析库,其强大的数据处理能力使得数据的清洗、转换、分析等操作变得非常简单。在Pandas中,旋转数据是数据处理中常用的操作之一。
旋转操作指的是将原始数据中的某些列转化为行,并将其它一些列作为新的列,这样可以方便地进行数据分析和统计等操作。在Pandas中,可以使用pivot()和pivot_table()函数来实现数据的旋转操作。
下面分别分步骤介绍这两个函数:
1. pivot()
pivot()函数将DataFrame中的一个或多个列作为行索引,其它列作为目标列,并将目标列的值作为新的列索引。语法如下:
DataFrame.pivot(index, columns, values)
其中,index表示生成的新表格的行索引,columns表示生成的新表格的列索引,values表示生成新表格的数据。
例如,定义如下的DataFrame数据:
import pandas as pd
data = {
'name': ['Alice', 'Bob', 'Charlie', 'David'],
'subject': ['Math', 'Math', 'English', 'English'],
'score': [85, 90, 80, 75]
}
df = pd.DataFrame(data)
print(df)
输出如下:
name subject score
0 Alice Math 85
1 Bob Math 90
2 Charlie English 80
3 David English 75
如果我们要按照学科进行旋转操作,可以使用pivot()函数,代码如下:
pivot_df = df.pivot(index='name', columns='subject', values='score')
print(pivot_df)
输出结果如下:
subject English Math
name
Alice NaN 85.0
Bob NaN 90.0
Charlie 80.0 NaN
David 75.0 NaN
可以看到,pivot()函数将原始数据中的subject列旋转为新表格的列索引,将name列作为新表格的行索引,将score列作为新表格中的数据。同时,由于某些学生只有在某些科目上有成绩,因此生成的新表格中有些值是缺失值,使用NaN表示。
2. pivot_table()
pivot_table()函数和pivot()函数的作用类似,可以实现数据的旋转操作。但是,pivot_table()函数除了可以应用于DataFrame之外,还可以应用于Series,而且还可以进行数据的聚合操作。
pivot_table()函数语法如下:
DataFrame.pivot_table(values, index, columns, aggfunc='mean')
其中,values表示pivot_table()函数生成新表格的数值,index表示新表格的行索引,columns表示新表格的列索引,aggfunc表示对新表格的聚合函数,缺省情况下会自动使用mean()函数求均值。
例如,定义如下的DataFrame数据:
import pandas as pd
data = {
'name': ['Alice', 'Bob', 'Charlie', 'David', 'Alice', 'Bob', 'Charlie', 'David'],
'subject': ['Math', 'Math', 'Math', 'Math', 'English', 'English', 'English', 'English'],
'score': [85, 90, 80, 75, 90, 85, 80, 75],
'class': ['A', 'A', 'B', 'B', 'A', 'A', 'B', 'B']
}
df = pd.DataFrame(data)
print(df)
输出结果如下:
name subject score class
0 Alice Math 85 A
1 Bob Math 90 A
2 Charlie Math 80 B
3 David Math 75 B
4 Alice English 90 A
5 Bob English 85 A
6 Charlie English 80 B
7 David English 75 B
如果我们要按照学科和班级进行旋转操作并进行均值统计,可以使用pivot_table()函数,代码如下:
pivot_table_df = pd.pivot_table(df, values='score', index=['name'], columns=['subject', 'class'])
print(pivot_table_df)
输出结果如下:
subject English Math
class A B A B
name
Alice 90.0 NaN 85.0 NaN
Bob 85.0 NaN 90.0 NaN
Charlie 80.0 80.0 NaN 80.0
David 75.0 75.0 NaN 75.0
可以看到,pivot_table()函数将原始数据中的subject和class列旋转为新表格的列索引,将name列作为新表格的行索引,将score列作为新表格中的数据。同时,对新表格中的数据进行了均值统计,生成的新表格中缺失值使用NaN表示。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Pandas 旋转数据 - Python技术站