【Pandas】積み上げグラフでデータの推移を視覚化する

Pandas
この記事は約11分で読めます。

こんにちは、JS2IIUです。

データ分析を行う上で、データを視覚的に理解することは非常に重要です。Pandasは、データ操作と分析のための強力なPythonライブラリであり、多様なグラフ作成機能を備えています。

本シリーズでは、Pandasを用いたデータ可視化手法を10回に渡って解説していきます。今回は、その第一弾として、積み上げグラフに焦点を当てます。積み上げグラフは、複数のカテゴリの値を積み重ねて表示することで、全体の構成比や各カテゴリの推移を把握するのに役立ちます。 .plot.areaメソッドを使って、様々なデータから積み上げグラフを作成し、データ分析に役立てましょう。

積み上げグラフとは?

積み上げグラフは、各カテゴリの値を積み重ねて表示することで、全体の構成比と各カテゴリの推移を同時に把握できるグラフです。複数のカテゴリのデータの関係性を視覚化する際に役立ちます。例えば、各製品の売上推移を積み上げグラフで表示すると、全体の売上における各製品の割合の変化を時間軸で捉えることができます。

Pandasで積み上げグラフを作成する方法

Pandasで積み上げグラフを作成するには、DataFrame.plot.area()メソッドを使用します。

Python
import pandas as pd
import matplotlib.pyplot as plt

# データフレームの作成
df = pd.DataFrame({
    'year': [2020, 2021, 2022],
    'category1': [10, 15, 20],
    'category2': [20, 25, 30],
    'category3': [30, 35, 40]
})

# 積み上げグラフの作成
df.plot.area(x='year', stacked=True)
plt.title('Stacked Area Chart')
plt.ylabel('Value')
plt.show()

解説:

  1. import pandas as pd: Pandasライブラリをpdとしてインポートします。
  2. import matplotlib.pyplot as plt: Matplotlibライブラリのpyplotモジュールをpltとしてインポートします。これはグラフの表示やカスタマイズに使用されます。
  3. データフレームの作成: pd.DataFrame()を使ってサンプルデータを含むデータフレームを作成します。year列はx軸に、category1category2category3列は積み上げグラフの各カテゴリに対応します。
  4. 積み上げグラフの作成: df.plot.area(x='year', stacked=True)で積み上げグラフを作成します。x='year'はx軸にyear列を使用することを指定し、stacked=Trueは積み上げグラフを作成することを指定します。
  5. グラフのタイトルとラベル: plt.title()でグラフのタイトルを、plt.ylabel()でy軸のラベルを設定します。
  6. グラフの表示: plt.show()でグラフを表示します。

こちらの記事も参考にして下さい。

積み上げグラフの活用事例

1. 売上データの推移

各商品の売上推移を積み上げグラフで表示することで、全体の売上における各商品の割合の変化を把握できます。

Python
import pandas as pd
import matplotlib.pyplot as plt

# サンプルデータの作成
data = {
    'Year': [2020, 2021, 2022],
    'Product A': [100, 120, 150],
    'Product B': [150, 180, 200],
    'Product C': [200, 250, 300]
}
df = pd.DataFrame(data)

# 積み上げグラフの作成
df.plot.area(x='Year', stacked=True)
plt.title('Sales Trend by Product')
plt.ylabel('Sales')
plt.show()

2. Webサイトへのアクセス経路の分析

ユーザーがWebサイトにアクセスする経路を、流入元別に積み上げグラフで表示することで、経路の変化を分析できます。

Python
import pandas as pd
import matplotlib.pyplot as plt

# サンプルデータの作成
data = {
    'Month': ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun'],
    'Organic Search': [1000, 1200, 1500, 1300, 1400, 1600],
    'Social Media': [500, 600, 700, 650, 750, 800],
    'Referral': [300, 350, 400, 380, 420, 450],
    'Direct Traffic': [200, 250, 300, 280, 320, 350]
}
df = pd.DataFrame(data)

# 積み上げグラフの作成
df.plot.area(x='Month', stacked=True)
plt.title('Website Traffic Sources')
plt.ylabel('Number of Visitors')
plt.show()

3. マーケティングキャンペーンの効果測定

異なるマーケティングキャンペーンによる顧客獲得数を積み上げグラフで比較することで、各キャンペーンの効果を測定できます。

Python
import pandas as pd
import matplotlib.pyplot as plt

# サンプルデータの作成
data = {
    'Week': [1, 2, 3, 4],
    'Campaign A': [100, 150, 120, 180],
    'Campaign B': [80, 100, 90, 120],
    'Campaign C': [50, 70, 60, 90]
}
df = pd.DataFrame(data)

# 積み上げグラフの作成
df.plot.area(x='Week', stacked=True)
plt.title('Customer Acquisition by Campaign')
plt.ylabel('Number of Customers')
plt.show()

4. プロジェクトの進捗管理

プロジェクトの各タスクの進捗状況を積み上げグラフで可視化することで、全体の進捗状況を把握できます。

Python
import pandas as pd
import matplotlib.pyplot as plt

# サンプルデータの作成
data = {
    'Date': pd.to_datetime(['2024-01-01', '2024-01-08', '2024-01-15', '2024-01-22']),
    'Task A': [20, 40, 60, 80],
    'Task B': [30, 50, 70, 90],
    'Task C': [10, 20, 30, 40]
}
df = pd.DataFrame(data)

# 積み上げグラフの作成
df.plot.area(x='Date', stacked=True)
plt.title('Project Progress')
plt.ylabel('Progress (%)')
plt.show()

5. 人口統計データの可視化

年齢層別の人口構成を積み上げグラフで表示することで、人口構造の変化を分析できます。

Python
import pandas as pd
import matplotlib.pyplot as plt

# サンプルデータの作成
data = {
    'Year': [1990, 2000, 2010, 2020],
    '0-14 years': [20, 18, 15, 12],
    '15-64 years': [60, 65, 68, 65],
    '65+ years': [20, 17, 17, 23]
}
df = pd.DataFrame(data)

# 積み上げグラフの作成
df.plot.area(x='Year', stacked=True)
plt.title('Population Structure by Age Group')
plt.ylabel('Population (%)')
plt.show()

6. 機械学習モデルの評価

機械学習モデルの精度を、異なるモデルやパラメータで比較する際に、積み上げグラフを用いて各クラスの予測確率を可視化できます。

Python
import pandas as pd
import matplotlib.pyplot as plt

# サンプルデータの作成
data = {
    'Model': ['Model A', 'Model B', 'Model C'],
    'Class 0': [0.2, 0.3, 0.1],
    'Class 1': [0.5, 0.4, 0.6],
    'Class 2': [0.3, 0.3, 0.3]
}
df = pd.DataFrame(data)

# 積み上げグラフの作成
df.plot.area(x='Model', stacked=True)
plt.title('Prediction Probability by Class')
plt.ylabel('Probability')
plt.show()

積み上げグラフのカスタマイズ

積み上げグラフの色、凡例、ラベルなどをカスタマイズすることで、より見やすく、分かりやすいグラフを作成できます。

Python
import pandas as pd
import matplotlib.pyplot as plt

# サンプルデータの作成
data = {
    'Year': [2020, 2021, 2022],
    'Product A': [100, 120, 150],
    'Product B': [150, 180, 200],
    'Product C': [200, 250, 300]
}
df = pd.DataFrame(data)

# 積み上げグラフの作成
df.plot.area(x='Year', stacked=True, color=['#e41a1c', '#377eb8', '#4daf4a'])
plt.title('Sales Trend by Product', fontsize=14)
plt.ylabel('Sales', fontsize=12)
plt.xlabel('Year', fontsize=12)
plt.legend(title='Product', loc='upper left')
plt.grid(True, linestyle='--')
plt.show()

解説:

  • color引数で、各カテゴリの色を指定しています。
  • plt.title(), plt.ylabel(), plt.xlabel()で、タイトル、y軸ラベル、x軸ラベルのフォントサイズを指定しています。
  • plt.legend()で、凡例のタイトルと位置を指定しています。
  • plt.grid()で、グリッド線を表示しています。

プログラミングする上での注意事項

  • データフレームのインデックスをx軸にしたい場合は、df.plot.area(stacked=True)のように、x引数を省略できます。
  • 積み上げグラフの色や凡例の位置などを変更するには、matplotlib.pyplotモジュールの関数を使用します。

参考になるWEBサイト

この記事が、Pandasで積み上げグラフを作成する際に役立つことを願っています。次回の記事では、棒グラフについて解説します。お楽しみに!

今回も少しだけPRです。

Pandasについて詳しく知りたいかた、もっと使いこなしたい方におすすめの本です。数年前に購入しましたが、今も手元に置いて時々見返しています。

「pandasクックブック Pythonによるデータ処理のレシピ」Theodore Petrou著、黒川利明訳。

最後まで読んでいただきありがとうございます。73

コメント

タイトルとURLをコピーしました