AI資格ドリル
資格を選ぶ

用語比較

DataFrame.pivotとpivot_tableの違い|集計しない組み替えか、集計つきの表か(Python3データ分析)

pivot は、列の値をもとに、表の形を組み替えます。集計はしません。pivot_table は、同じ組み合わせの値を集計して、表にします。

pivot は、同じ index と columns の組み合わせに複数の値があると ValueError になります。

この記事の根拠と出典

各セクションの見出しの下に、公式資料で確認した内容か編集部の整理かをラベルで示しています。 試験日・料金・申込条件・試験方式は変わることがあるため、申込前に公式サイトで確認してください。

DataFrame.pivotとpandas.pivot_tableの要点

DataFrame.pivot

index・columns・values で表の形を組み替える。集計はしない。同じ index と columns の組に複数の値があると ValueError になる。

pandas.pivot_table

同じ組み合わせの値を aggfunc で集計して表にする。aggfunc の既定値は 'mean'。fill_value で欠損値を置き換えられる。

違いを表で確認

比較軸DataFrame.pivotpandas.pivot_table
集計しないする(aggfunc の既定値は 'mean')
同じ index と columns の組が重複したときValueError になるaggfunc で1つの値にまとめる
欠損値の置き換え引数なしfill_value で指定できる
使いどころすでに1組1値の表を、縦長から横長へ組み替える重複のあるデータを、合計や平均で表にする

Python3エンジニア認定データ分析試験の学習に使う書籍(Amazon)

PR

ほかの資格を含む参考書・問題集の一覧を見る

どこで迷っているかを切り分ける

01

縦長のデータを、そのまま横長の表にしたい人

pivot を使います。index と columns の組ごとに値が1つなら、値を変えずに形だけ組み替えます。

02

同じ組み合わせの行が複数あり、合計や平均を出したい人

pivot_table を使います。aggfunc に 'sum' や 'mean' を渡して集計します。

03

pivot で「Index contains duplicate entries」と出て、止まった人

同じ index と columns の組に、複数の値があります。集計してよいなら、pivot_table に替えます。

具体例で使い分ける

例 1

pivot は値を変えずに形を組み替える

公式の例の df(foo が one と two、bar が A・B・C、baz が 1〜6)に、df.pivot(index="foo", columns="bar", values="baz") を使います。

  • foo ごとに行が、bar ごとに列ができます。
  • 結果は、one の行が 1・2・3、two の行が 4・5・6 になります。
  • 各組み合わせに値が1つしかないので、集計は要りません。

結論: pivot は、1組1値のデータの形を組み替えるときに使います。

例 2

重複があると pivot は ValueError になる

公式の例の foo が one・one・two・two、bar が A・A・B・C、baz が 1〜4 の df に、同じ pivot を使います。

  • 先頭の2行は、index(foo)と columns(bar)が one と A で同じです。
  • 公式の例では、ValueError: Index contains duplicate entries, cannot reshape と出ます。
  • 公式は、集計が要るときは DataFrame.pivot_table を使うよう書いています。

結論: 重複があるデータには、pivot ではなく pivot_table を使います。

例 3

pivot_table は aggfunc で集計する

公式の例の df に、pd.pivot_table(df, values="D", index=["A", "B"], columns=["C"], aggfunc="sum") を使います。

  • A と B の組ごとに、C が large か small かで D を合計します。
  • 結果は、bar・one の行が large 4.0・small 5.0、foo・two の行が large NaN・small 6.0 です。
  • fill_value=0 を足すと、NaN だったマスが 0 になります。

結論: pivot_table は、集計と欠損値の置き換えまでを1回で行えます。

問題文から答えを選ぶ手順

  1. 1

    index と columns の組に重複があるかを確かめる

    重複がなければ pivot、あるなら pivot_table です。

  2. 2

    集計の方法を決める

    合計なら 'sum'、平均なら 'mean' を aggfunc に渡します。既定値は 'mean' です。

  3. 3

    欠損値の扱いを決める

    NaN を 0 などにしたいなら、pivot_table の fill_value を使います。

試験での見分け方

  • 1集計せずに形だけ組み替えるときは、pivot を使う。
  • 2同じ index と columns の組に複数の値があり、集計してよいときは、pivot_table を使う。
  • 3pivot_table の aggfunc の既定値は 'mean' である。
  • 4pivot で重複があると、ValueError になる。

誤答しやすい選択肢

pivot でも重複を自動で平均してくれると考える

修正: pivot は集計しません。重複があると ValueError です。平均を出したいなら pivot_table を使います。

pivot_table の既定の集計が合計だと考える

修正: aggfunc の既定値は 'mean'(平均)です。合計が欲しいときは aggfunc="sum" と指定します。

pivot_table の結果の NaN を、データの欠けと思い込む

修正: その組み合わせの行が元のデータにないために NaN になっています。fill_value で 0 などに置き換えられます。

確認問題

Q1同じ index と columns の組に複数の値があるデータへ pivot を使うと?

答え: ValueError になる

公式の例では「Index contains duplicate entries, cannot reshape」と出ます。

Q2pivot_table の aggfunc の既定値は?

答え: 'mean'

公式のシグネチャに aggfunc='mean' と書かれています。

Q3pivot_table で欠損値を 0 に置き換える引数は?

答え: fill_value

公式は、fill_value を、集計後の結果の欠損値を置き換える値としています。

Q4集計をしないのは、pivot と pivot_table のどちらか?

答え: pivot

公式は、pivot は data aggregation をサポートしないと書いています。

到達チェック

  • pivot が集計しないことを説明できる
  • 重複があるときに pivot が ValueError になることを言える
  • pivot_table の aggfunc の既定値を答えられる
  • fill_value の役割を言える

同じ資格で次に知りたいこと

よくある質問

Qpivotとpivot_tableの違いは?

A

pivot は集計せずに表の形を組み替え、pivot_table は同じ組み合わせの値を aggfunc で集計して表にします。

QpivotでValueErrorが出るのはなぜですか?

A

同じ index と columns の組に複数の値があるためです。集計してよいなら pivot_table を使います。

Qpivot_tableの既定の集計は?

A

aggfunc の既定値は 'mean'(平均)です。

Qデータ分析試験の範囲?

A

本サイトの第4章 pandas で扱います。出題の形式や範囲は、受験前に公式の案内で確認してください。

次に見る比較

執筆: AI資格ドリル編集部(運営者情報を見る)