Pandas DataFrame.groupby()

17 Mar 2025 | 6 分钟阅读

引言

Pandas 是一个用于数据处理和分析的著名 Python 库。它提供了一种强大而灵活的方法来处理数据结构,例如数据帧和系列。 Pandas 的关键特性之一是能够使用 groupby() 方法按一个或多个变量对数据进行分组。在本文中,我们将探讨如何使用 groupby() 来分析和控制数据。

Pandas 中的 groupby() 是什么?

Pandas 中的 groupby() 方法是一个有用的工具,它允许您根据一个或多个变量对数据进行分组。它用于根据明确定义的变量(例如列名)将一个巨大的数据大纲分成更小的组,然后将一个功能应用于每个组。这允许您单独分析数据的子集并对其进行比较。

语法

Groupby 的参数

by(通过)

  • mapping、function、str 或可迭代

其主要任务是确定 groupby 中的组。 如果我们使用 by 作为一个函数,则会在对象的索引的每个值上调用它。 如果传递了 dict 或 Series,则 Series 或 dict 的值将用于确定组。 如果传递了一个 ndarray,则值将按原样用于确定组。 我们还可以传递标签或标签列表以按自已的列分组。

  • {0 或 'index',1 或 'columns'},默认值 0

level

  • int、level 名称或此类序列,默认值 None。

当轴是 MultiIndex(分层)时使用它,因此,它将按特定级别或级别分组。

as_index

  • bool,默认值 True

它返回具有组标签作为聚合输出的索引的对象。

排序

  • bool,默认值 True

它用于对组键进行排序。 关闭它以获得更好的性能。 它不会影响每个组中观测值的顺序。 Groupby 保留每个组中行的顺序。

group_keys

  • bool,默认值 True

当我们调用它时,它会将组键添加到索引中以识别各个部分。

observed

  • bool,默认值 False

它仅在任何分组器为 Categoricals 时使用。 如果值为 True,则它将仅显示分类分组器的观测值。 否则,它将显示所有值。

**kwargs

它是一个可选参数,仅接受传递给 groupby 的关键字参数“mutated”。

返回值

它返回 DataFrameGroupBy 或 SeriesGroupBy。 返回值取决于包含有关组信息的调用对象。

Groupby 操作

此操作包括以下聚合/分组数据的步骤

  • 拆分数据集
  • 分析数据
  • 聚合或组合数据

注意:Groupby 操作的结果不是 DataFrame,而是 DataFrame 对象的 dict。

将数据拆分为组

Groupby 拆分是一种用于数据分析的方法,用于根据一个或多个变量的值将数据分组到子集中。 基本思想是根据特定变量将数据集分成组,然后对每个分组单独执行某种分析或计算。 此过程通常用于统计分析和人工智能,以及数据可视化和探索性数据分析。

  • groupby 拆分的过程通常包括以下前进
  • 选择您需要按其分组数据的至少一个变量。
  • 根据这些变量的值将您的数据分成不同的组。
  • 单独对每个分组执行某种分析或计算。 连接来自每个分组的结果以生成数据的最终摘要。

有多种方法可以将任何对象拆分为组,如下所示

  • obj.groupby('key')
  • obj.groupby(['key1','key2'])
  • obj.groupby(key,axis=1)

我们还可以向每个子集添加一些功能。 可以在应用的功能上执行以下操作

  • 聚合:计算汇总统计量。
  • 转换:它执行一些组特定的操作。
  • 过滤:它通过丢弃一些条件来过滤数据。

聚合

它被定义为为每个组返回单个聚合值的函数。 当创建 groupby 对象时,我们可以在分组数据上执行多个聚合操作。 聚合是数据分析中的一种强大方法,包括连接数据集中的各个值以获得汇总统计信息,这有助于获得经验并做出明智的决策。 可以在数据集中的单个变量或多个变量上执行聚合。

Pandas 提供了一套广泛的函数,用于执行聚合任务,包括 mean()、sum()、count()、min()、max()、median()、var() 和 std()。 这些函数可以应用于 DataFrame 中的各个列或列的集合。

示例

输出

Course
B.Ed        98
B.Sc        82
BA          87
M.Phill     91
Name: Percentage, dtype: int64

转换

它是一个针对组或列的操作,它执行一些组特定的计算并返回一个索引大小与组大小相同的对象。 在 Pandas 中,转换包括将一个函数应用于 DataFrame 中的列或一组列以修改数据,通常是为了实现标准化或缩放的目的。 Pandas 提供了 transform() 策略,该策略将一个函数应用于 groupby 对象的每个组,并返回原始 DataFrame 的更改版本。 transform() 策略可用于执行各种转换,包括规范化数据、缩放数据和填充缺失值。

示例

输出

    Percentage
0       NaN
1       NaN
2       NaN
3       NaN

过滤

filter() 函数通过定义一些标准来过滤数据并返回数据的子集。 Pandas 中的过滤是指从 DataFrame 中选择行子集的最常见方法,该方法基于某些条件或模型。 交互包括过滤掉不满足预定条件的行并保留那些满足条件的行。

Pandas 提供了几种过滤方法,包括布尔索引、query() 和 filter()。 这些方法允许我们根据各种模型过滤 DataFrame 的行,例如列值、索引标签或包含多个列的条件。

示例

输出

     Name      Percentage    Course
0   Parker      82            B.Sc
1   Smith       98            B.Ed
2   John        91            M.Phill
3   William     87            BA

示例

输出

Pandas Groupby

示例

输出

    Name     Percentage
0   Parker     82
1   Smith      98
2   John       91
3   William    87

结论

在本文中,我们已经看到了 Pandas 中的 groupby() 技术,以及如何使用它根据一个或多个变量对数据进行分组。 我们已经认识到如何将函数应用于组,包括使用 agg() 技术使用各种函数。 我们同样认识到如何将条件表达式与 groupby() 结合使用以创建更明确的组。 通过 groupby() 策略,您可以以一种强大的和适应性的方式打破和控制您的数据。


下一主题DataFrame.head()