ピボットテーブルとは
ピボットテーブルは、データの集計を行うための特殊な表形式の一つです。大量のデータを「行」「列」「値」の3つの要素に分けて配置し、それぞれの交差点にあたるデータの集計結果(合計、平均、カウントなど)を表示します。
このような形式は、データの傾向を視覚的に理解しやすくするため、ビジネスの現場でよく利用されます。例えば、商品の売上データがある場合、ピボットテーブルを使って「商品カテゴリ」を行、「地域」を列、「売上高」を値とすることで、各地域での商品カテゴリ別の売上高を一覧できます。
Pandasのpivot_table
関数を使うと、Pythonで簡単にピボットテーブルを作成できます。この関数は、データフレームのデータを指定したキーに基づいて集計し、新たなデータフレームとして出力します。これにより、データ分析を行う際の作業効率を大幅に向上させることができます。
Pandasでのピボットテーブルの作成方法
Pandasのpivot_table
関数を使って、データフレームからピボットテーブルを作成することができます。以下にその基本的な使い方を示します。
まず、Pandasをインポートし、データフレームを作成します。
import pandas as pd
# データフレームの作成
df = pd.DataFrame({
'A': ['foo', 'foo', 'foo', 'foo', 'bar', 'bar', 'bar', 'bar'],
'B': ['one', 'one', 'two', 'two', 'one', 'one', 'two', 'two'],
'C': ['small', 'large', 'large', 'small', 'small', 'small', 'large', 'small'],
'D': [1, 2, 2, 3, 3, 4, 5, 6],
'E': [2, 4, 5, 5, 6, 6, 8, 9]
})
次に、pivot_table
関数を使ってピボットテーブルを作成します。この関数では、values
パラメータに集計する列名、index
パラメータに行のキーとなる列名、columns
パラメータに列のキーとなる列名を指定します。aggfunc
パラメータには集計関数を指定します。
# ピボットテーブルの作成
pivot_df = df.pivot_table(values='D', index='A', columns='C', aggfunc='sum')
上記のコードでは、’D’列の値を集計し、’A’列の値を行のキー、’C’列の値を列のキーとしてピボットテーブルを作成します。集計関数としては合計値(’sum’)を計算しています。
このように、Pandasのpivot_table
関数を使うと、簡単にピボットテーブルを作成できます。これにより、データの傾向を視覚的に把握しやすくなります。また、pivot_table
関数は非常に柔軟性が高く、さまざまな集計方法やキーの組み合わせに対応しています。これにより、データ分析の幅が広がります。具体的な活用例については次のセクションで説明します。
Pandasのpivotとpivot_tableの違い
Pandasには、データフレームを再形成するためのpivot
とpivot_table
という2つの関数があります。これらは似ていますが、使用方法と機能にはいくつかの違いがあります。
pivot関数
pivot
関数は、指定した列を新たなデータフレームのインデックス、列、値に変換します。これにより、データフレームの形状を変更して、データを異なる視点から見ることができます。
# pivot関数の使用例
df.pivot(index='A', columns='B', values='D')
ただし、pivot
関数には2つの制限があります。一つ目は、変換後の新しいインデックスと列の組み合わせが一意でなければならないことです。つまり、同じインデックスと列の組み合わせが複数存在する場合、pivot
関数はエラーを返します。二つ目は、pivot
関数は単一の値列しか扱えないことです。
pivot_table関数
一方、pivot_table
関数は、pivot
関数の制限を克服するために設計されています。pivot_table
関数は、複数の値列を扱うことができ、また、同じインデックスと列の組み合わせが複数存在する場合でも、集約関数(デフォルトではmean
)を使用してそれらを一つの値にまとめることができます。
# pivot_table関数の使用例
df.pivot_table(values='D', index='A', columns='B', aggfunc='sum')
このように、pivot_table
関数はpivot
関数よりも柔軟性があり、より複雑なデータセットを扱うことができます。ただし、その分、計算コストが高くなる可能性があります。
以上が、Pandasのpivot
関数とpivot_table
関数の主な違いです。どちらの関数を使用するかは、扱うデータと目的によります。具体的な活用例については次のセクションで説明します。
ピボットテーブルの活用例
Pandasのピボットテーブルは、データ分析において非常に強力なツールです。以下に、その活用例をいくつか示します。
売上データの分析
商品の売上データがある場合、ピボットテーブルを使って「商品カテゴリ」を行、「地域」を列、「売上高」を値とすることで、各地域での商品カテゴリ別の売上高を一覧できます。これにより、どの商品がどの地域でよく売れているか、または売れていないかを一目で把握することができます。
# 売上データのピボットテーブル
sales_pivot = sales_df.pivot_table(values='Sales', index='Category', columns='Region', aggfunc='sum')
サーベイデータの集計
アンケートやサーベイの結果を集計する際にも、ピボットテーブルは有用です。例えば、アンケートの回答者の属性(年齢、性別、職業など)を行や列にし、特定の質問の回答を値にすることで、その質問の回答が回答者の属性にどのように依存しているかを調べることができます。
# サーベイデータのピボットテーブル
survey_pivot = survey_df.pivot_table(values='Question1', index='Age', columns='Gender', aggfunc='mean')
時系列データの再形成
時系列データを扱う際にも、ピボットテーブルは便利です。例えば、日付を行、商品カテゴリを列、売上高を値とするピボットテーブルを作成することで、時間の経過とともに各商品カテゴリの売上がどのように変化しているかを視覚的に把握することができます。
# 時系列データのピボットテーブル
time_series_pivot = sales_df.pivot_table(values='Sales', index='Date', columns='Category', aggfunc='sum')
以上のように、Pandasのピボットテーブルは、さまざまなデータ分析タスクにおいて有用なツールとなります。データの特性や分析の目的に応じて、適切な行、列、値、集約関数を選択することで、データから有益な洞察を引き出すことができます。この強力な機能を活用して、データ分析の幅を広げてみてください。