在 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
,我們可以看到我們有三個條目的計數列為 35
、30
和 20
,以及兩個條目 Foo
的計數列為 25
、15
和 10
。
在 Pandas 中,我們還可以視覺化與已分組的資料型別關聯的資料型別和列名稱。在我們的例子中,我們在底部的輸出中列出了名為 count_1
的分組列,其資料型別為 int64
。
因此,使用 groupby
函式和 nlargest()
函式,我們在 DataFrame 中對列進行了分組、排序和獲取某些記錄。