在 Pandas 中分组和排序

Preet Sanghavi 2023年1月30日
  1. 在 Pandas 中对 DataFrame 进行分组和排序
  2. 在 Pandas 中使用 groupby 函数对 DataFrame 进行分组和排序
在 Pandas 中分组和排序

本教程探讨了对 DataFrame 的数据进行分组并在 Pandas 中对其进行排序的概念。

在 Pandas 中对 DataFrame 进行分组和排序

正如我们所了解的,Pandas 是一种高级数据分析工具或 Python 中的包扩展。大多数使用 Python 并需要高质量数据分析的公司和组织都在大规模使用此工具。

本教程让我们了解如何以及为什么对 Pandas DataFrame 中的某些数据进行分组和排序。大多数使用 Python 和 Pandas 进行数据分析的企业和组织都需要从他们的数据中收集见解,以更好地规划他们的业务。

Pandas 通过 groupby 功能帮助分析师收集此类见解。例如,考虑一家以产品为基础的公司。

该公司可能需要对某些产品进行分组并在其销售订单中对其进行分类。因此,分组和排序在数据分析和解释方面具有许多优势。

在开始之前,我们创建一个虚拟 DataFrame 来使用。这里我们创建一个 DataFrame,即 df

我们在这个 df DataFrame 中添加了一些列和某些数据。我们可以使用以下代码执行此操作。

import pandas as pd

df = pd.DataFrame({"dat1": [9, 5]})
df = pd.DataFrame(
    {
        "name": ["Foo", "Foo", "Baar", "Foo", "Baar", "Foo", "Baar", "Baar"],
        "count_1": [5, 10, 12, 15, 20, 25, 30, 35],
        "count_2": [100, 150, 100, 25, 250, 300, 400, 500],
    }
)

上面的代码创建了一个 DataFrame 以及一些条目。要查看数据中的条目,我们使用以下代码。

print(df)

上面的代码给出了以下输出。

	name	count_1	count_2
0	Foo		5		100
1	Foo		10		150
2	Baar	12		100
3	Foo		15		25
4	Baar	20		250
5	Foo		25		300
6	Baar	30		400
7	Baar	35		500

正如我们所见,我们有 4 列和 8 行索引,从值 0 到值 7。如果我们查看我们的 DataFrame,我们会看到某些重复的名称,命名为 df

由于我们已经设置了 DataFrame,让我们在这个 DataFrame 中对数据进行分组,然后对这些分组中的值进行排序。

在 Pandas 中使用 groupby 函数对 DataFrame 进行分组和排序

让我们将这些数据分组,因为我们已经将其设置到位。我们可以对这些数据进行分组,以便我们在名称列下将相似产品的名称相互分组,以进行更好的数据分析。

我们可以使用 groupby 函数在 Pandas 中执行此操作。此功能可确保将指定列下的产品或值放在一起或分组。

我们可以对这些分组数据执行任何额外的操作。这种分组操作可以在 Pandas 中进行,如下图所示。

df.groupby(["name"])

如我们所见,我们在名为 df 的 DataFrame 上使用 groupby 函数,并将列 name 作为参数传递。

现在让我们用这个 groupby 函数对我们的数据进行排序,这样我们不仅有分组,而且还有按特定格式排序的数据。

在执行 groupby 操作后,我们希望对数据进行排序以在我们的分组中具有三个最大值。

这意味着我们希望在对我们的 df 中的分组 DataFrame 进行排序后获取三个最大值。我们可以使用以下代码执行此操作。

print(df.groupby(["name"])["count_1"].nlargest(3))

该代码获取以下结果。

name
Baar  7    35
      6    30
      4    20
Foo   5    25
      3    15
      1    10
Name: count_1, dtype: int64

正如我们所看到的,我们对分组进行了排序,使得我们只有在 count_1 列中显示的具有最高计数的前三个名称。

因此,对于名称 Baar,我们可以看到我们有三个条目的计数列为 353020,以及两个条目 Foo 的计数列为 251510

在 Pandas 中,我们还可以可视化与已分组的数据类型关联的数据类型和列名称。在我们的例子中,我们在底部的输出中列出了名为 count_1 的分组列,其数据类型为 int64

因此,使用 groupby 函数和 nlargest() 函数,我们在 DataFrame 中对列进行了分组、排序和获取某些记录。

作者: Preet Sanghavi
Preet Sanghavi avatar Preet Sanghavi avatar

Preet writes his thoughts about programming in a simplified manner to help others learn better. With thorough research, his articles offer descriptive and easy to understand solutions.

LinkedIn GitHub

相关文章 - Pandas Groupby