パンダの groupby() と diff()

Fariba Laiq 2023年6月21日
  1. Python でのデータのグループ化
  2. Pandas で diff() とともに groupby() を使用する
パンダの groupby() と diff()

Pandas ライブラリは、数値に加えてテキスト データを処理するための完全なツールです。 多くのデータ分析アプリケーションと機械学習の探索/前処理からテキスト入力を除外するか、そこから情報を抽出する必要があります。

これを行うには、Pandas が提供するさまざまな組み込み手法を使用して、DataFrame のテキスト列を追加、削除、および変更できます。 この記事では、データをグループ化し、グループ化された値の違いを見つける方法について簡単に説明します。

Python でのデータのグループ化

データ分析では、1つ以上の列でレコードをグループ化することが頻繁に必要になります。 このようなシナリオの例は次のとおりです。

  • 各事業部門の従業員数を数えます。
    ・各部門の男女の平均給与を把握。
  • さまざまな年齢の従業員の平均給与を計算します。

Pandas は、ほとんどのグループ化作業を簡単に処理できるようにする groupby() 関数を提供します。 ただし、そのポジションが完了するために支援が必要な仕事がいくつかあります。 他の方法を提供しようとしましょう。

最も重要な Pandas 関数の 1つは groupby() です。 この方法では、分割を使用してレコードがグループ化および要約され、結合戦略が使用されます。

Pandas で diff() とともに groupby() を使用する

以下の例では、さまざまな生徒の ID_NumberStu_Names、および Marks を含むデータフレームを作成しました。 その後、ID_Number でグループ化された、連続する日付間のマークの差を含む Marks_diff という新しい列を作成しました。

ここで fillna(0) を使用したのは、グループ変数の値が DataFrame 内の隣接する行間で変更されると、fillna(0) が Pandas にゼロを挿入するように指示するためです。

出力に示されているように、Harry と Petter の点数の差は 6.0、Daniel と Ron の点数の差は 10 です。

コード例:

import pandas as pd

d1 = pd.DataFrame(
    {
        "ID_Number": ["ID1", "ID1", "ID2", "ID2"],
        "Stu_Names": ["Harry", "Petter", "Daniel", "Ron"],
        "Marks": [72, 78, 80, 90],
    }
)
print(d1)
d1 = d1.sort_values(by=["ID_Number"])
d1["Marks_diff"] = d1.groupby(["ID_Number"])["Marks"].diff().fillna(0)
print(d1)

出力:

    ID_Number Stu_Names  Marks
0       ID1     Harry     72
1       ID1    Petter     78
2       ID2    Daniel     80
3       ID2       Ron     90
    ID_Number Stu_Names  Marks  Marks_diff
0       ID1     Harry     72         0.0
1       ID1    Petter     78         6.0
2       ID2    Daniel     80         0.0
3       ID2       Ron     90       10.0
著者: Fariba Laiq
Fariba Laiq avatar Fariba Laiq avatar

I am Fariba Laiq from Pakistan. An android app developer, technical content writer, and coding instructor. Writing has always been one of my passions. I love to learn, implement and convey my knowledge to others.

LinkedIn

関連記事 - Pandas Dataframe