在 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