Pythonでクロス集計を行い、積み上げ棒グラフで可視化する方法

  • 2024年2月17日
  • 2024年2月17日
  • Python
  • 417回
  • 0件

この記事では、データ分析で頻繁に使用される「クロス集計」の結果を積み上げ棒グラフを用いて視覚的に表現する方法について記載します。クロス集計を使いこなすことでデータからより豊富な洞察を得られるようになります。

Pythonでのクロス集計と積み上げ棒グラフの実装

Pythonでデータの可視化を行うには、主にPandasMatplotlibという二つのライブラリを使用します。ここでは、これらのライブラリを活用して、簡単な仮のデータセットを作成し、そのデータをクロス集計して積み上げ棒グラフで可視化する方法を確認していきます。

まずは、必要なライブラリをインポートし、仮のデータセットを作成します。

import pandas as pd
import matplotlib.pyplot as plt

# 仮のデータセットの作成
data = {'商品閲覧': [1, 0, 1, 1, 0, 1, 0, 1],
        'カート追加': [0, 1, 1, 0, 1, 1, 0, 0]}
df = pd.DataFrame(data)

次に、Pandasのcrosstab関数を使用してクロス集計を行い、Matplotlibで結果を積み上げ棒グラフとして描画します。

# 日本語フォントの設定
plt.rcParams['font.family'] = 'Meiryo'  # Windowsの場合

# クロス集計
ctab = pd.crosstab(df['商品閲覧'], df['カート追加'])

# 積み上げ棒グラフの描画
ctab.plot(kind='bar', stacked=True)
plt.title('商品閲覧とカート追加の関係')
plt.xlabel('商品閲覧')
plt.ylabel('件数')
plt.legend(title='カート追加')
plt.show()

実践的な応用例

実践的な応用例として、より複雑なデータセットを想定し、そのデータをクロス集計して積み上げ棒グラフで可視化する具体的なコード例を以下に示します。この例では、性別と年齢層による商品購入状況を分析します。

import pandas as pd
import matplotlib.pyplot as plt

# より複雑な仮のデータセットの作成
data = {
    '性別': ['男性', '女性', '男性', '女性', '男性', '女性', '男性', '女性'],
    '年齢層': ['20代', '20代', '30代', '30代', '20代', '30代', '20代', '30代'],
    '購入': ['はい', 'いいえ', 'はい', 'はい', 'いいえ', 'はい', 'いいえ', 'はい']
}
df = pd.DataFrame(data)

このデータセットでは、性別(男性、女性)、年齢層(20代、30代)、そして商品を購入したかどうか(はい、いいえ)を示しています。

# 性別と年齢層による購入状況のクロス集計
purchase_cross = pd.crosstab([df['性別'], df['年齢層']], df['購入'])

# 積み上げ棒グラフの可視化
purchase_cross.plot(kind='bar', stacked=True, color=['#1f77b4', '#ff7f0e'])
plt.title('性別と年齢層による商品購入状況のクロス集計')
plt.xlabel('性別と年齢層')
plt.ylabel('件数')
plt.xticks(rotation=45)
plt.legend(title='購入')
plt.tight_layout()
plt.show()

このコードは、性別と年齢層を組み合わせて、それぞれのグループでの商品購入有無をクロス集計し、結果を積み上げ棒グラフで可視化しています。pd.crosstab関数にリストを渡すことで、複数のカテゴリによるクロス集計を簡単に実行できます。

積み上げ棒グラフは、plotメソッドのkind='bar', stacked=Trueオプションを使用して描画されます。このグラフにより、性別と年齢層ごとの購入傾向の違いを直感的に把握することができます。

まとめ

この例を通じて、Pythonでのデータ分析と可視化の応用力をさらに深めることができます。データセットの特性や分析の目的に応じて、さまざまなクロス集計と可視化の方法を試してみてください。

最新情報をチェックしよう!