用語比較
groupbyのaggとtransformの違い|グループごとに1行へまとめるか、元と同じ行数で返すか(Python3データ分析)
groupby の agg はグループごとに要約値を出してグループの次元を減らし、transform はグループごとの計算をして、元と同じ index の結果を返します。
この記事の目次
この記事の根拠と出典
各セクションの見出しの下に、公式資料で確認した内容か編集部の整理かをラベルで示しています。 試験日・料金・申込条件・試験方式は変わることがあるため、申込前に公式サイトで確認してください。
agg(aggregate)とtransformの要点
agg(aggregate)
グループごとに、合計や平均などの要約値を出す。結果の行数はグループの数になる。グループのキーは、既定で index に入る。
transform
グループごとの計算をして、元と同じ index の結果を返す。公式は cumsum() や diff() を例に挙げている。
違いを表で確認
| 比較軸 | agg(aggregate) | transform |
|---|---|---|
| 結果の行数 | グループの数になる | 元のデータと同じ |
| 結果の index | グループのキー(as_index=True の既定) | 元のデータの index |
| 公式の説明 | グループの次元を減らす(reduces the dimension) | 元と同じ index の結果を返す(like-indexed) |
| 使いどころ | グループごとの合計・平均・件数を表にする | グループ内の累積・差・標準化を、元の行に付ける |
Python3エンジニア認定データ分析試験の学習に使う書籍(Amazon)
PRどこで迷っているかを切り分ける
種類ごとの合計を、一覧にしたい人
agg か sum() などを使います。グループの数だけの行になります。
グループ内の累積や差を、元の表の列として足したい人
transform 系の cumsum() や diff() を使います。元と同じ行数で返るので、列として足せます。
結果の行数が減って、元の表に戻せなくなった人
要約値を出す agg の結果になっています。元の行に付けたいなら、transform の形を選びます。
具体例で使い分ける
例 1
agg 系の sum はグループの数の行になる
公式の例の animals(kind が cat・dog・cat・dog の4行)に、animals.groupby("kind").sum() を使います。
- 結果は、cat と dog の2行です。
- cat は height 18.6・weight 17.8、dog は height 40.0・weight 205.5 です。
- kind はグループのキーなので、index に入ります。as_index=False を付けると、列に出ます。
結論: 要約値を出す操作は、元の4行が、グループの数の2行になります。
例 2
transform 系の cumsum は元の行数のまま
公式の例の speeds(falcon・parrot・lion・monkey・leopard の5行)に、groupby("class")["max_speed"].cumsum() を使います。
- 結果は、falcon 389.0、parrot 413.0、lion 80.2、monkey
NaN、leopard 138.2 です。 - 行は5行のままで、index も元の動物の名前です。
- bird のグループの中で、falcon の次の parrot は 389.0 + 24.0 = 413.0 と累積されます。
結論: transform の形は、元の行に1対1で対応するので、列として足せます。
例 3
agg は列ごとに別の集計を指定できる
公式の例の grouped に、grouped.agg({"C": "sum", "D": "std"}) を使います。
- dict で、C 列は合計、D 列は標準偏差を指定します。
- 結果は、bar が C 0.392940・D 1.366330、foo が C -1.796421・D 0.884785 です。
結論: agg は、1回の呼び出しで、列ごとに集計の種類を変えられます。
問題文から答えを選ぶ手順
- 1
結果の行数を決める
グループごとに1行の表なら agg、元の行数のままなら transform の形です。
- 2
元の表に列として足すかを決める
足すなら、元と同じ index で返る transform の形です。
- 3
列ごとの集計の違いを決める
列ごとに集計を変えるなら、agg に dict を渡します。
試験での見分け方
- 1グループごとの要約値を出すときは、agg を使う。
- 2グループ内の計算を、元の行と同じ index で返すときは、transform の形を使う。
- 3agg の結果は、グループのキーが index に入る(as_index=True の既定)。
- 4グループのキーを列で受け取りたいときは、as_index=False を指定する。
誤答しやすい選択肢
groupby の結果は、いつも元の行数のままと考える
修正: 要約値を出す操作は、グループの数の行になります。元の行数で返るのは、transform の形の操作です。
groupby の結果の kind が、列として残ると考える
修正: 既定の as_index=True では、グループのキーは index に入ります。列にしたいなら as_index=False を使います。
cumsum() が、全体の累積だと考える
修正: groupby のあとの cumsum() は、グループの中で累積します。公式の例では、lion の 80.2 から数え直されます。
確認問題
Q1公式の用語で、グループごとの要約値を出す操作は?
答え: Aggregation
公式は、Aggregation を、グループの次元を減らす操作としています。
Q2元と同じ index の結果を返す操作は?
答え: Transformation
公式は、Transformation の結果が、グループ化した対象と同じ index になると書いています。
Q3groupby の結果でキーを列にする引数は?
答え: as_index=False
公式は、as_index=False でキーが列に含まれると書いています。
Q4公式が transform の例に挙げる、グループ内の累積の関数は?
答え: cumsum()
公式は、cumsum() と diff() を例に挙げています。
到達チェック
- agg の結果の行数がグループの数になることを言える
- transform の結果が元と同じ index であることを言える
- as_index=False の役割を説明できる
- cumsum() が、グループ内の累積であることを答えられる
関連ページで確認する
同じ資格で次に知りたいこと
- Series.mapとapplyの違い|dictで置き換えるか、関数や引数つきで処理するか(Python3データ分析)
pandasのSeries.map(dictやSeriesによる置き換え、na_action)とSeries.apply(関数やNumPyのufunc、args)の違いを、dictにない値の扱い、欠損値の扱い、戻り値で整理します。pandas公式リファレンスの例で、dictにないキーが
NaNになる点つきです。 - sort_valuesとsort_indexの違い|列の値で並べるか、行のラベルで並べるか(Python3データ分析)
pandasのsort_values(列などの値で並べ替え)とsort_index(行や列のラベルで並べ替え)の違いを、並べる基準、by引数、欠損値の扱いで整理します。pandas公式リファレンスの例で、col1の値で並べると
NaNが末尾になり、indexで並べると1・29・100・150・234の順になる点つきです。 - np.whereとnp.selectの違い|2択で値を選ぶか、複数の条件から選ぶか(Python3データ分析)
NumPyのnp.where(条件が真ならx、偽ならy)とnp.select(条件のリストと選択肢のリストから選ぶ)の違いを、条件の数、default、複数の条件が真のときの扱いで整理します。NumPy公式リファレンスの例で、np.selectの結果が0・-1・-2・42・16・25になる点つきです。
よくある質問
Qaggとtransformの違いは?
agg はグループごとに要約値を出し、行数がグループの数になります。transform は元と同じ index の結果を返します。
Qgroupbyのあとにkindが列に残らないのはなぜですか?
既定の as_index=True では、グループのキーが index に入るためです。列にするには as_index=False を指定します。
Qグループ内の累積を出すには?
groupby のあとに cumsum() を使います。公式は、cumsum() と diff() を transform の例に挙げています。
Qデータ分析試験の範囲?
本サイトの第4章 pandas で扱います。出題の形式や範囲は、受験前に公式の案内で確認してください。
次に見る比較
- G検定・DS検定・統計検定2級で重なる用語10語の比較
同じ名前の用語の定義と収録章を、資格ごとに並べます。
- ベイズの定理と条件付き確率の違い(統計検定2級の式と計算例)
求める確率の向きの違いと、陽性になる確率の計算例を確かめます。
- 紛らわしい用語ペア早見表
混同しやすい用語の違いと判定の手掛かりを、資格別の一覧で確かめます。
執筆: AI資格ドリル編集部(運営者情報を見る)
