Pandas Groupby —解釋

如何有效利用熊貓的Groupby功能

Pandas是一個非常強大的Python數據分析庫,可加快項目的預處理步驟。 在本文中,我將通過許多示例介紹Pandas的groupby功能,這些示例可幫助您全面瞭解該功能。

Pandas Groupby —解釋

> Photo by Markus Spiske on Unsplash

Groupby是一種通用且易於使用的功能,有助於獲得數據概覽。 它使探索數據集和揭示變量之間的潛在關係變得更加容易。

最好通過示例解釋Groupby。 我將使用Kaggle上可用的客戶流失數據集。 我只參加了其中的一部分,足以顯示groupby函數的每個細節。

與往常一樣,我們從導入numpy和pandas開始:

<code>import pandas as pd
import numpy as np/<code>

讓我們快速瀏覽一下數據集:

<code>df.shape(7043, 9)
df.head()/<code>
Pandas Groupby —解釋

數據集包括8個有關客戶以及客戶是否離職(即離開公司)的功能。

在將groupby函數應用於數據集之前,讓我們看一個直觀的示例。 可視化始終是解釋概念的好方法。 假設我們有兩個功能。 一種是顏色,這是一種分類特徵,另一種是數字特徵,即值。 我們要按顏色對值進行分組,並計算不同顏色的值的平均值(或任何其他聚合度)。 然後最後根據平均值對顏色進行排序。 下圖顯示了此過程的步驟。

Pandas Groupby —解釋

讓我們回到我們的數據集。 要查看性別在攪動中是否起作用,我們可以選擇性別和用戶流失列以及分組性別。 然後我們可以應用均值函數。

Pandas Groupby —解釋

男性和女性的流失率非常接近。

如果我們不選擇列,而是直接將groupby應用於數據框,則將根據聚合函數計算所有數字列:

Pandas Groupby —解釋

男性和女性的平均所有數字特徵似乎都大致相同。

我們還可以通過添加sort_values函數對結果進行排序:

Pandas Groupby —解釋

默認情況下,它以升序排序。 我們可以通過將ascending參數設置為false來更改它。

Pandas Groupby —解釋

具有光纖互聯網服務的客戶比其他客戶更容易流失。

我們可以通過在方括號中傳遞列名稱來基於多個列進行分組:

Pandas Groupby —解釋

"合同"列具有3個類別,"老年人"列具有2個類別,因此我們共有6個組。 對於每個組,計算平均"攪動"率。

讓我們看看每月的費用是否取決於合同類型。 我們需要從數據集中獲取"合同"和"每月費用"列,並按"合同"分組,並將均值函數應用於結果。

Pandas Groupby —解釋

正如預期的那樣,長期合同的平均每月費用較低。

我們可以根據任務應用其他aggeragate函數。 例如,我們可能希望查看不同互聯網服務類型的合同類型分佈。 由於這兩個都是分類變量,因此我們可以應用count函數:

Pandas Groupby —解釋

由於我們應用了計數功能,因此返回的數據框包括所有其他列,因為無論數據框如何,它都可以計數值。 在所有列上,值的數量都是相同的,因此我們只需選擇一列即可查看值。 關於Pandas的一件好事是,完成一項任務通常不只一種方法。

Pandas Groupby —解釋

Pandas Groupby —解釋

Pandas Groupby —解釋

這三行返回以下輸出:

Pandas Groupby —解釋

您還可以執行以下相同任務,但是返回的對象將是一個數據框:

Pandas Groupby —解釋

請注意,某些聚合函數需要數值。 例如,如果我們只有分類變量並嘗試應用均值函數,則會收到錯誤消息:

Pandas Groupby —解釋

Pandas Groupby —解釋

我們可以使示例多樣化,但基本邏輯是相同的。 Groupby函數可以用作探索性數據分析過程中的第一個函數,因為它使我們對數據集中變量之間的關係有了一個瞭解。

as_index參數

groupby函數中的變量作為結果數據幀的索引返回。 我們可以通過將as_index參數設置為false來更改它。

Pandas Groupby —解釋

Pandas Groupby —解釋

多種聚合功能

在某些情況下,應用groupby函數後,您可能希望同時查看不同組的計數和均值。 如果類別分佈不平衡,則僅檢查均值可能會導致錯誤的假設。 您可以對groupby的結果應用多個聚合函數。 它們不僅限於計數和均值,還可以將函數名稱作為參數傳遞給agg()函數。

Pandas Groupby —解釋

謝謝閱讀。 如果您有任何反饋意見,請告訴我。


(本文翻譯自Soner Yildirim的文章《Pandas Groupby — Explained》,參考:https://towardsdatascience.com/pandas-groupby-explained-453692519d0)


分享到:


相關文章: