0Pricing
Python Academy · レッスン

GroupBy、集約、ピボットテーブル

groupby 操作とピボットテーブルでデータを要約します。

「GroupBy、集約、ピボットテーブル」はCoddyKit上の無料Python Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはPython Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Python Academyコースには全4レッスンが含まれています。

groupby の基本

df.groupby("col") は、列の一意な値に基づいて DataFrame をグループに分割します。集約処理をつなげると結果を取得できます。

import pandas as pd

df = pd.DataFrame({
    "dept":["HR","IT","HR","IT","HR"],
    "salary":[60,80,65,90,70]
})
print(df.groupby("dept")["salary"].mean())
# HR    65.0
# IT    85.0

複数の集約関数

agg() を使用すると、複数の集約関数を一度に適用できます。

import pandas as pd

df = pd.DataFrame({"dept":["HR","IT","HR","IT"],"sal":[60,80,65,90]})
result = df.groupby("dept")["sal"].agg(["mean","max","count"])
print(result)

名前付き集約

agg() のキーワード引数を使用すると、出力列に明示的な名前を付けられます(Pandas 0.25 以降)。

import pandas as pd

df = pd.DataFrame({"dept":["HR","IT","HR","IT"],"sal":[60,80,65,90]})
result = df.groupby("dept").agg(
    avg_sal=("sal","mean"),
    max_sal=("sal","max"),
    count=("sal","size")
)
print(result)

複数の列に対する groupby

列のリストを渡すと、階層的なグループを作成できます。

import pandas as pd

df = pd.DataFrame({
    "year":[2023,2023,2024,2024],
    "dept":["HR","IT","HR","IT"],
    "sal":[60,80,65,90]
})
print(df.groupby(["year","dept"])["sal"].sum())

transform()

transform は元のインデックスにそろった Series を返します。グループ単位の統計量を元の DataFrame に追加するときに便利です。

import pandas as pd

df = pd.DataFrame({"dept":["HR","IT","HR","IT"],"sal":[60,80,65,90]})
df["dept_avg"] = df.groupby("dept")["sal"].transform("mean")
print(df)

filter()

filter(func) は、関数が True を返すグループだけを残します。

import pandas as pd

df = pd.DataFrame({"dept":["HR","IT","HR"],"sal":[60,80,65]})
# Keep only departments with mean salary > 70:
result = df.groupby("dept").filter(lambda g: g["sal"].mean() > 70)
print(result)

pivot_table

pd.pivot_table は、カスタム集約に対応したスプレッドシート形式の集計表を作成します。

import pandas as pd

df = pd.DataFrame({
    "year":[2023,2023,2024,2024],
    "region":["East","West","East","West"],
    "sales":[100,150,120,200]
})
pt = pd.pivot_table(df, values="sales",
                    index="year", columns="region",
                    aggfunc="sum")
print(pt)

crosstab

pd.crosstab はクロス集計表を作成します。カテゴリ値の組み合わせを数えるときに便利です。

import pandas as pd

df = pd.DataFrame({"gender":["M","F","M","F","M"],"result":["pass","pass","fail","fail","pass"]})
print(pd.crosstab(df["gender"], df["result"]))

apply()

apply(func) は、各グループの DataFrame(axis=0)または各行・列(axis=1)にカスタム関数を適用します。

import pandas as pd

df = pd.DataFrame({"dept":["HR","IT","HR"],"sal":[60,80,65]})

def range_sal(g):
    return g["sal"].max() - g["sal"].min()

print(df.groupby("dept").apply(range_sal))

再形成のための unstack

複数レベルの groupby の後で unstack() を使用すると、最も内側のインデックスレベルを列に移動できます。

import pandas as pd

df = pd.DataFrame({"year":[2023,2023,2024],"dept":["HR","IT","HR"],"sal":[60,80,65]})
result = df.groupby(["year","dept"])["sal"].mean().unstack()
print(result)

時系列のための resample

resample("M") は時系列 DataFrame を暦の期間ごとにグループ化し、月単位や年単位の集約を可能にします。

import pandas as pd

idx = pd.date_range("2024-01-01", periods=90, freq="D")
df = pd.DataFrame({"sales": range(90)}, index=idx)
monthly = df.resample("ME").sum()
print(monthly)

確認問題

groupby().transform("mean") は何を返しますか。

復習

groupby は集約のためにデータをグループに分割します。複数の関数には agg()、グループの統計量を各行に戻すには transform()、グループを削除するには filter()、複数の軸にまたがる集計には pivot_table()/crosstab() を使用します。

よくある質問

「GroupBy、集約、ピボットテーブル」レッスンは無料ですか?

はい。「GroupBy、集約、ピボットテーブル」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Python Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Python Academyコースには全4レッスンが含まれています。

「GroupBy、集約、ピボットテーブル」で何を学びますか?

groupby 操作とピボットテーブルでデータを要約します。 ブラウザで直接実行するハンズオンコードでPython Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Python Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのPython Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。

「GroupBy、集約、ピボットテーブル」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このPython Academyレッスンでコードを書いて実行できますか?

はい。すべてのPython Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. Series と DataFrame の基礎
  2. インデックス指定、フィルタリング、ブールマスク
  3. GroupBy、集約、ピボットテーブル
  4. マージ、結合、データクリーニング
← Python Academyに戻る