Python pandas.pivot_table() 函数
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
的新列,分别显示行和列的和。
相关文章
Pandas DataFrame DataFrame.shift() 函数
发布时间:2024/04/24 浏览次数:114 分类:Python
-
DataFrame.shift() 函数是将 DataFrame 的索引按指定的周期数进行移位。
在 Pandas 中使用 stack() 和 unstack() 函数重塑 DataFrame
发布时间:2024/04/24 浏览次数:175 分类:Python
-
本文讨论了 Pandas 中 stack() 和 unstack() 函数的使用。
计算 Pandas DataFrame 中的方差
发布时间:2024/04/23 浏览次数:181 分类:Python
-
本教程演示了如何计算 Python Pandas DataFrame 中的方差。
查找已安装的 Pandas 版本
发布时间:2024/04/23 浏览次数:116 分类:Python
-
在本文中,我们将介绍如何查找已安装的 Python Pandas 库版本。我们使用了内置版本功能和其他功能来显示其他已安装版本的详细信息。
Pandas 中的 Groupby 索引列
发布时间:2024/04/23 浏览次数:79 分类:Python
-
本教程将介绍如何使用 Python Pandas Groupby 对数据进行分类,然后将函数应用于类别。通过示例使用 groupby() 函数按 Pandas 中的多个索引列进行分组。
Pandas 通过 Groupby 应用变换
发布时间:2024/04/23 浏览次数:180 分类:Python
-
本教程演示了 Pandas Python 中与 groupby 方法一起使用的 apply 和 transform 之间的区别。