Pandas 中的 Groupby 索引列
本教程介绍 Python Pandas 中的 groupby
如何对数据进行分类并将函数应用于类别。使用 groupby()
函数通过示例对 Pandas 中的多个索引列进行分组。
在 Python Pandas 中使用 groupby()
函数按索引列分组
在这篇文章中,Pandas DataFrame data.groupby()
函数根据特定标准将数据分组。Pandas 对象可以沿任意轴分为任意数量的组。
标签到组名的映射是分组的抽象定义。groupby
操作拆分对象、应用函数并组合结果。
这对于对大量数据进行分组和执行操作很有用。Pandas groupby
默认行为将 groupby
列转换为索引,并将它们从 DataFrame 的列列表中删除。
语法:
DataFrame.groupby(
by=None, axis=0, level=None, as_index=True, sort=True, group_keys=True
)
参数:
by |
映射、函数、字符串或可迭代对象 |
axis |
整数,默认值 0 |
level |
对于多索引轴,按特定级别或级别(分层)分组。 |
as_index |
作为聚合输出的索引,返回一个带有组标签的对象。这仅适用于 DataFrame 输入。当 index=False 时,输出以 SQL 样式 分组。 |
sort |
应该对组中的键进行排序。将其关闭以提高性能。应该注意的是,每组内的观察顺序不受此影响。Groupby 维护每个组内的行顺序。 |
group_keys |
调用 apply 时将组键添加到索引以识别碎片挤压:如果可能,减少返回类型的维数;否则,返回一致的类型。 |
取一个包含两列的 DataFrame:date
和 item sell
。Groupby
日期和项目销售并获取用户的逐项计数。
首先,我们需要导入必要的库 pandas
和 numpy
,创建三个列 ct
、date
和 item_sell
并将一组值传递给这些列。
import pandas as pd
import numpy as np
data = pd.DataFrame()
data["date"] = ["a", "a", "a", "b"]
data["item_sell"] = ["z", "z", "a", "a"]
data["ct"] = 1
print(data)
输出:
date item_sell ct
0 a z 1
1 a z 1
2 a a 1
3 b a 1
使用 date
和 item_sell
列进行分组。
import pandas as pd
import numpy as np
data = pd.DataFrame()
data["date"] = ["a", "a", "a", "b"]
data["item_sell"] = ["z", "z", "a", "a"]
data["ct"] = 1
output = pd.pivot_table(data, values="ct", index=["date", "item_sell"], aggfunc=np.sum)
print(output)
输出:
ct
date item_sell
a a 1
z 2
b a 1
groupby()
by 参数现在可以引用列名称或索引级别名称。
import pandas as pd
import numpy as np
arrays = [
["rar", "raz", "bal", "bac", "foa", "foa", "qus", "qus"],
["six", "seven", "six", "seven", "six", "seven", "six", "seven"],
]
index = pd.MultiIndex.from_arrays(arrays, names=["first", "second"])
data = pd.DataFrame({"C": [1, 1, 1, 1, 2, 2, 3, 3], "D": np.arange(8)}, index=index)
print(data)
输出:
C D
first second
rar six 1 0
raz seven 1 1
bal six 1 2
bac seven 1 3
foa six 2 4
seven 2 5
qus six 3 6
seven 3 7
按 second
和 C
分组,然后使用 sum
函数计算总和。
import pandas as pd
import numpy as np
arrays = [
["rar", "raz", "bal", "bac", "foa", "foa", "qus", "qus"],
["six", "seven", "six", "seven", "six", "seven", "six", "seven"],
]
index = pd.MultiIndex.from_arrays(arrays, names=["first", "second"])
data = pd.DataFrame({"C": [1, 1, 1, 1, 2, 2, 3, 3], "D": np.arange(8)}, index=index)
output = data.groupby(["second", "C"]).sum()
print(output)
输出:
在 Python Pandas 中对 CSV 文件数据使用 groupby()
函数
现在对 CSV 文件使用 groupby()
函数。要下载代码中使用的 CSV 文件,请单击此处([学生在考试中的表现 | Kaggle])。
使用的 CSV 文件是关于学生表现的。要根据 gender
对数据进行分组,请使用 groupby()
函数。
Python Pandas 库的 read_csv
函数用于从驱动器中读取文件。将文件存储在数据变量中。
import pandas as pd
data = pd.read_csv("/content/drive/MyDrive/CSV/StudentsPerformance.csv")
print(data)
输出:
应用 groupby()
函数。
import pandas as pd
data = pd.read_csv("StudentsPerformance.csv")
std = data.groupby("gender")
print(std.first())
让我们打印任何组中的值。为此,请使用团队的名称。
get_group
函数用于查找任何组中的条目。找出 female
组中包含的值。
import pandas as pd
data = pd.read_csv("StudentsPerformance.csv")
std = data.groupby("gender")
print(std.get_group("female"))
输出:
使用 groupby()
函数创建多个类别组。要拆分,请使用多个列。
import pandas as pd
data = pd.read_csv("StudentsPerformance.csv")
std_per = data.groupby(["gender", "lunch"])
print(std_per.first())
输出:
Groupby()
是一个具有多种变体的通用函数。它使得根据某些标准拆分 DataFrame 变得非常简单和高效。