Pandas 通过 Groupby 应用变换
groupby()
是 Python 中一个强大的方法,它允许我们根据某些标准将数据分成不同的组。目的是运行计算并执行更好的分析。
Python 中 apply()
和 transform()
的区别
apply()
和 transform()
是与 groupby()
方法调用结合使用的两种方法。这两种方法的区别在于传递的参数和返回的值。
apply()
方法接受参数作为 DataFrame
并返回 DataFrame 的标量
或序列
。因此,它允许我们对每个组的列、行和完整的 DataFrame 进行操作。
transform()
方法仅接受参数作为表示每个组中的列的系列,并返回与输入系列长度相同的序列。因此,我们一次只能对每个组内的特定列进行操作。
在 Python Pandas 中使用 apply()
方法
在以下代码中,我们加载了一个包含学生记录的 CSV 文件。我们使用 apply 函数来显示每个部门中的最高分数。
首先,我们必须使用 groupby()
方法对每个部门进行分组。然后使用 max()
函数找到每个部门的最高分。
输出以系列的形式返回。我们还可以对多列或整个 DataFrame 执行操作。
# Python 3.x
import pandas as pd
df = pd.read_csv("Student.csv")
display(df)
def f(my_df):
return my_df.Marks.max()
df.groupby("Department").apply(f)
输出:
在 Python Pandas 中使用 transform()
方法
在下一个示例中,我们通过使用 groupby()
方法将每个部门分组,将另一列 Mean_Marks
合并到 DataFrame 中,然后使用 mean
关键字计算两个部门的平均值。
输出显示两个部门的平均分数。
在这里,transform()
方法在单个列上运行,在我们的例子中是 Marks
。
# Python 3.x
import pandas as pd
df = pd.read_csv("Student.csv")
display(df)
df["Mean_Marks"] = df.groupby("Department")["Marks"].transform("mean")
display(df)
输出:
相关文章
Pandas 中的 GroupBy 应用
发布时间:2024/04/23 浏览次数:181 分类:Python
-
本文演示了什么是 GroupBy-Apply 行为以及如何在 Pandas 中按数据分组和应用函数。
Pandas 中的 GroupBy 和聚合多列数据
发布时间:2024/04/23 浏览次数:189 分类:Python
-
本教程演示了基于多列对数据进行分组,并将聚合方法应用于 Python 中 Pandas 数据框中的分组数据。
在 Pandas 中将 Timedelta 转换为 Int
发布时间:2024/04/23 浏览次数:191 分类:Python
-
可以使用 Pandas 中的 dt 属性将 timedelta 转换为整数。
如何从 Pandas 的日期时间列中提取月份和年份
发布时间:2024/04/23 浏览次数:124 分类:Python
-
我们可以分别使用 dt.year()和 dt.month()方法从 Datetime 列中提取出年和蛾。我们还可以使用 pandas.DatetimeIndex.month 以及 pandas.DatetimeIndex.year 和 strftime()方法提取年份和月份。