PythonのPandasで円グラフを表示する方法について

Python,イメージ

AI実装検定のご案内

PythonのPandasを使って円グラフ(pie chart)を表示する方法について、基本から応用まで体系的に詳しく解説します。

目次

円グラフの基本的な描画方法(plot.pie()

Pandasには、Seriesオブジェクトに対して直接plot.pie()メソッドを使って円グラフを描画する機能があります。

import pandas as pd
import matplotlib.pyplot as plt

# データ準備(例:フルーツの売上)
data = {'りんご': 30, 'バナナ': 20, 'みかん': 50}
series = pd.Series(data)

# 円グラフの表示
series.plot.pie(autopct='%1.1f%%', startangle=90, counterclock=False)
plt.title('フルーツの売上割合')
plt.ylabel('')  # y軸ラベルは不要なので空に
plt.show()

解説

  • autopct='%1.1f%%':各要素の割合を表示(1桁の小数)
  • startangle=90:最初の要素を90度の位置から描画(見やすさ向上)
  • counterclock=False:時計回りに描画
  • ylabel(''):不要なy軸ラベルを非表示に

DataFrameのデータを円グラフにする方法

Seriesではなく、DataFrameから特定の列だけを円グラフにすることも可能です。

df = pd.DataFrame({
    '果物': ['りんご', 'バナナ', 'みかん', 'ぶどう'],
    '売上': [30, 20, 50, 10]
})

# Seriesに変換して円グラフ化
df.set_index('果物')['売上'].plot.pie(
    autopct='%1.1f%%',
    startangle=90,
    counterclock=False,
    figsize=(6, 6)
)
plt.title('果物別売上割合')
plt.ylabel('')
plt.show()

各セグメントを強調(explodeの使用)

特定のセグメントを「飛び出させて強調」するには explode パラメータを使います。

explode = [0.1, 0, 0, 0]  # 最初の要素「りんご」だけを強調

df.set_index('果物')['売上'].plot.pie(
    autopct='%1.1f%%',
    startangle=90,
    explode=explode,
    shadow=True
)
plt.title('りんごを強調した円グラフ')
plt.ylabel('')
plt.show()

カラーのカスタマイズ

円グラフの色を自由に設定したい場合は、colorsオプションを使います。

colors = ['#ff9999','#66b3ff','#99ff99','#ffcc99']

df.set_index('果物')['売上'].plot.pie(
    colors=colors,
    autopct='%1.1f%%',
    startangle=90
)
plt.title('カスタムカラーの円グラフ')
plt.ylabel('')
plt.show()

欠損値(NaN)がある場合の対処

欠損値(NaN)があると、エラーや不正なグラフになります。dropna()で除外しましょう。

series = pd.Series({'りんご': 30, 'バナナ': None, 'みかん': 50})
series.dropna().plot.pie(autopct='%1.1f%%')
plt.title('NaNを除いた円グラフ')
plt.ylabel('')
plt.show()

複数の円グラフ(サブプロット)

DataFrameに複数の列がある場合、それぞれに対して個別に円グラフを描画することもできます。

df = pd.DataFrame({
    'A支店': [30, 20, 50],
    'B支店': [40, 10, 50]
}, index=['りんご', 'バナナ', 'みかん'])

df.plot.pie(
    subplots=True,
    figsize=(12, 6),
    autopct='%1.1f%%',
    startangle=90
)
plt.suptitle('支店別売上構成')
plt.show()

よくあるエラーと対策

エラー・現象原因解決策
ValueError: Wedge sizes 'x' must be non negative valuesデータに負の値が含まれている負の値を取り除くか別のグラフで代用
TypeError: pie() got an unexpected keyword argument 'xlabel'DataFrameのplot()をそのまま使っているSeries.plot.pie()を使う or .set_index()してから使用
円グラフがつぶれて表示figsizeが正方形でないfigsize=(6, 6) などで調整

まとめ

項目内容
メソッドSeries.plot.pie() を使う
デザイン調整autopct, startangle, colors, explode, shadow
推奨される使い方割合が5〜10項目以内で明確な分類があるデータに使用
補足多すぎるカテゴリには不向き。棒グラフや積み上げグラフの方が視認性が高いことも

以上、PythonのPandasで円グラフを表示する方法についてでした。

最後までお読みいただき、ありがとうございました。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次