Python pandas.pivot_table() 函数
Minahil Noor
2023年1月30日
2020年11月7日
-
pandas.pivot_table()
的语法 -
示例代码:
pandas.pivot_table()
-
示例代码:
pandas.pivot_table()
指定多个聚合函数 -
示例代码:
pandas.pivot_table()
使用margins
参数
Python Pandaspandas.pivot_table()
函数避免了 DataFrame
的数据重复。它对数据进行汇总,并对数据应用不同的聚合函数。
pandas.pivot_table()
的语法
pandas.pivot_table(data,
values= None,
index= None,
columns= None,
aggfunc= 'mean',
fill_value= None,
margins= False,
dropna= True,
margins_name= 'All',
observed= False)
参数
这个函数有几个参数。所有参数的默认值如上所述。
data |
这是 DataFrame ,我们要从中删除重复的数据。 |
values |
它代表要汇总的列 |
index |
它是一个列、grouper 、数组或列表。它代表我们想要作为索引的数据列,即行。 |
columns |
它是一个列、grouper 、数组或列表。它代表了我们希望在输出数据透视表中作为列的数据列。 |
aggfunc |
它是一个函数、函数列表或字典。它代表将应用于数据的聚合函数。如果传递的是聚合函数的列表,那么在结果表中,每个聚合函数将有一列,列名在顶部。 |
fill_value |
它是一个标量。它表示将取代输出表中缺失值的数值。 |
margins |
这是一个布尔值。它代表了在取了各自行和列的和之后生成的行和列。 |
dropna |
它是一个布尔值。它从输出表中删除值为 NaN 的列。 |
margins_name |
它是一个 “字符串”。它表示如果 margins 值为 True 时生成的行和列的名称。 |
observed |
它是一个布尔值。如果任何分组是分类的,那么这个参数就适用。如果为 True ,则显示分类分组的观察值。如果是 False ,则显示分类分组的所有值。 |
返回值
它返回汇总后的 DataFrame
。
示例代码:pandas.pivot_table()
让我们通过实现这个函数来深入了解它。
import pandas as pd
dataframe = pd.DataFrame({
"Name":
["Olivia",
"Olivia",
"Olivia",
"Olivia",
"Meghan",
"Meghan",
"Meghan",
"Meghan"],
"Date":
["03-06-2019",
"04-06-2019",
"03-06-2019",
"04-06-2019",
"03-06-2019",
"04-06-2019",
"03-06-2019",
"04-06-2019"],
"Science Marks":
[10,
2,
4,
6,
8,
9,
1,
10]
})
print(dataframe)
示例 DataFrame
的是:
Name Date Science Marks
0 Olivia 03-06-2019 10
1 Olivia 04-06-2019 2
2 Olivia 03-06-2019 4
3 Olivia 04-06-2019 6
4 Meghan 03-06-2019 8
5 Meghan 04-06-2019 9
6 Meghan 03-06-2019 1
7 Meghan 04-06-2019 10
请注意,上述数据在一列中多次包含相同的值。这个 pivot_table
函数将汇总这些数据。
import pandas as pd
dataframe = pd.DataFrame({
"Name":
["Olivia",
"Olivia",
"Olivia",
"Olivia",
"Meghan",
"Meghan",
"Meghan",
"Meghan"],
"Date":
["03-06-2019",
"04-06-2019",
"03-06-2019",
"04-06-2019",
"03-06-2019",
"04-06-2019",
"03-06-2019",
"04-06-2019"],
"Science Marks":
[10,
2,
4,
6,
8,
9,
1,
10]
})
pivotTable = pd.pivot_table(dataframe, index= "Name", columns= "Date")
print(pivotTable)
输出:
Science Marks
Date 03-06-2019 04-06-2019
Name
Meghan 4.5 9.5
Olivia 7.0 4.0
这里,我们选择了 Name
列作为索引,Date
作为列。函数已经根据默认参数生成了结果。默认的聚合函数 mean
计算了数值的平均值。
示例代码:pandas.pivot_table()
指定多个聚合函数
import pandas as pd
dataframe = pd.DataFrame({
"Name":
["Olivia",
"Olivia",
"Olivia",
"Olivia",
"Meghan",
"Meghan",
"Meghan",
"Meghan"],
"Date":
["03-06-2019",
"04-06-2019",
"03-06-2019",
"04-06-2019",
"03-06-2019",
"04-06-2019",
"03-06-2019",
"04-06-2019"],
"Science Marks":
[10,
2,
4,
6,
8,
9,
1,
10]
})
pivotTable = pd.pivot_table(dataframe,
index= "Name",
columns= "Date",
aggfunc= ["sum", "count"])
print(pivotTable)
输出:
sum count
Science Marks Science Marks
Date 03-06-2019 04-06-2019 03-06-2019 04-06-2019
Name
Meghan 9 19 2 2
Olivia 14 8 2 2
我们使用了两个汇总函数。这些函数的列是单独生成的。
示例代码:pandas.pivot_table()
使用 margins
参数
import pandas as pd
dataframe = pd.DataFrame({
"Name":
["Olivia",
"Olivia",
"Olivia",
"Olivia",
"Meghan",
"Meghan",
"Meghan",
"Meghan"],
"Date":
["03-06-2019",
"04-06-2019",
"03-06-2019",
"04-06-2019",
"03-06-2019",
"04-06-2019",
"03-06-2019",
"04-06-2019"],
"Science Marks":
[10,
2,
4,
6,
8,
9,
1,
10]
})
pivotTable = pd.pivot_table(dataframe,
index= "Name",
columns= "Date",
aggfunc= ["sum", "count"],
margins= True)
print(pivotTable)
输出:
sum count
Science Marks Science Marks
Date 03-06-2019 04-06-2019 All 03-06-2019 04-06-2019 All
Name
Meghan 9 19 28 2 2 4
Olivia 14 8 22 2 2 4
All 23 27 50 4 4 8
margins
参数生成了一个名为 All
的新行和一个名为 All
的新列,分别显示行和列的和。