Pandas 中的 GroupBy 應用

Preet Sanghavi 2023年1月30日
  1. Pandas GroupBy-Apply 行為
  2. 在 Pandas 中使用 groupby() 函式
  3. 在 Pandas 中加入 groupby()apply() 函式
Pandas 中的 GroupBy 應用

本教程旨在探索 Pandas 中的 GroupBy Apply 概念。Pandas 在 Python 中用作高階資料分析工具或包擴充套件。

當我們在 SQL 表、電子表格或異構列中有資料時,強烈建議使用 Pandas。資料可以有序也可以無序,還支援時序資料。

Pandas GroupBy-Apply 行為

讓我們嘗試瞭解如何按資料分組,然後應用特定函式來聚合或計算資料的值。GroupBy 幫助我們將某些資料條目組合或彙集在一起​​。

GroupBy 幫助我們跟蹤資料中的不同資料入口點。讓我們看看這個方法的實際效果。

我們將建立一個虛擬 DataFrame 來使用。在這裡,我們建立了一個 DataFrame dframe 和幾行。

from pandas import *

our_data = {"mylabel": Series(["P", "R", "E", "E", "T", "S", "A", "P", "R", "E", "T"])}
dframe = DataFrame(our_data)

print(dframe)  # print output

輸出:

   mylabel
0         P
1         R
2         E
3         E
4         T
5         S
6         A
7         P
8         R
9         E
10        T

我們的 DataFrame 帶有標籤 mylabel,並設定了不同的資料點和索引。每個字母都被分配了一個特定的索引。

這些標籤是我們將學習如何分組和應用某些聚合函式的東西。

在 Pandas 中使用 groupby() 函式

我們可以藉助以下程式碼瞭解如何對資料進行分組。正如我們所看到的,我們正在嘗試對每個字母進行分組並計算它們的出現次數。

from pandas import *

our_data = {"mylabel": Series(["P", "R", "E", "E", "T", "S", "A", "P", "R", "E", "T"])}
dframe = DataFrame(our_data)


def perc(value, total):
    return value / float(total)


def gcou(values):
    return len(values)


grpd_count = dframe.groupby("mylabel").mylabel.agg(gcou)

print(grpd_count)  # prints output

輸出:

mylabel
A    1
E    3
P    2
R    2
S    1
T    2
Name: mylabel, dtype: int64

我們需要使用我們建立的名為 grpd_count 的新 DataFrame 來應用任何數學公式。在這裡,我們計算了可用的每個字母表的數量。

在 Pandas 中加入 groupby()apply() 函式

讓我們操作 DataFrame grpd_count 以將每個字母的總計數除以所有計數的總和。這個想法通常用於衡量一個實體在 0 到 1 範圍內的權重。

接近 1 的值具有較高的權重,而接近於 0 的值具有較低的權重,這意味著該特定字母的出現次數少於其他字母。

程式碼示例:

from pandas import *

our_data = {"mylabel": Series(["P", "R", "E", "E", "T", "S", "A", "P", "R", "E", "T"])}
dframe = DataFrame(our_data)


def perc(value, total):
    return value / float(total)


def gcou(values):
    return len(values)


grpd_count = dframe.groupby("mylabel").mylabel.agg(gcou)
mydata = grpd_count.apply(perc, total=dframe.mylabel.count())

print(mydata)  # prints output

輸出:

mylabel
A    0.090909
E    0.272727
P    0.181818
R    0.181818
S    0.090909
T    0.181818
Name: mylabel, dtype: float64

在 Pandas 中對資料進行分組後,我們已經成功執行了一項操作。

因此,藉助 Pandas 中的 Grouping By 技術,我們可以根據我們的需求以及在需要時並基於一個或多個條件有效地過濾資料,然後將某些函式或聚合應用於結果。

作者: 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