【Python実践可視化】pandas × matplotlib で効率よくグラフを描こう|初心者向けに徹底解説

データ分析でよく使われるpandasには、実はグラフ描画機能も内蔵されています。
この記事では、pandasのplot()メソッドとmatplotlibを組み合わせて、実データから手軽に、かつカスタマイズ性の高いグラフを描く方法を紹介します。


🧱 pandasとmatplotlibの連携とは?

通常、matplotlibでグラフを描くにはplt.plot()などを使いますが、pandasのDataFrameSeriesには、plot()というメソッドが用意されており、これがmatplotlibと自動で連携します

import pandas as pd
import matplotlib.pyplot as plt

df = pd.DataFrame({
"月": ["1月", "2月", "3月", "4月"],
"売上": [100, 120, 130, 90]
})

df.plot(x="月", y="売上")
plt.title("月別売上推移")
plt.ylabel("売上(万円)")
plt.grid(True)
plt.show()
  • df.plot() は matplotlib を内部で呼び出してグラフを生成
  • x=y= で軸を指定
  • 通常の plt.title()plt.grid() とも併用可能

📈 折れ線グラフ・棒グラフ・散布図を切り替える

plot() には kind= 引数でグラフの種類を指定できます。

kindの値描画されるグラフ
"line"折れ線グラフ(デフォルト)
"bar"縦棒グラフ
"barh"横棒グラフ
"scatter"散布図(要:x=y=
df.plot(x="月", y="売上", kind="bar", color="skyblue")
plt.title("月別売上(棒グラフ)")
plt.ylabel("売上")
plt.show()

🧩 複数列を一度に可視化

df = pd.DataFrame({
"月": ["1月", "2月", "3月", "4月"],
"A店": [100, 120, 130, 90],
"B店": [110, 105, 115, 100]
})

df.set_index("月").plot(kind="line", marker="o")
plt.title("店舗別売上推移")
plt.ylabel("売上(万円)")
plt.grid(True)
plt.show()
  • set_index("月") により、x軸に月を使って複数系列を一括でプロット
  • marker="o" を付けて、見やすい丸印を追加

🎨 グラフのカスタマイズ(matplotlib併用)

pandasのplot()では物足りない部分は、matplotlibの命令を併用して仕上げましょう。

ax = df.plot(x="月", y="売上", kind="line", color="green")
ax.set_title("売上推移")
ax.set_ylabel("売上(万円)")
ax.grid(True)

ここでは plot() の戻り値 ax を使って、set_title()set_ylabel() などで細かく調整しています。


📊 応用:グループごとの集計結果を可視化

data = {
"都道府県": ["東京", "東京", "大阪", "大阪", "福岡", "福岡"],
"性別": ["男性", "女性", "男性", "女性", "男性", "女性"],
"売上": [100, 90, 80, 85, 70, 75]
}
df = pd.DataFrame(data)

pivot = df.pivot(index="性別", columns="都道府県", values="売上")
pivot.plot(kind="bar")
plt.title("都道府県別・性別売上")
plt.ylabel("売上(万円)")
plt.grid(True)
plt.show()
  • pivot() でデータを整形
  • plot() で複数系列の棒グラフを一括描画

✅ 今回のまとめ

学んだこと内容
pandasのplot()データフレームから直接グラフ作成
kindの指定折れ線・棒・散布図などに対応
matplotlib併用タイトル・ラベル・凡例など自由に調整
実践応用pivotや集計データも簡単に可視化可能

📝 練習問題

  1. 以下のデータから kind="bar" を使って月別売上グラフを描いてください:
df = pd.DataFrame({
"月": ["1月", "2月", "3月"],
"売上": [100, 120, 90]
})
  1. 以下のデータを pivot() して、性別ごとに各都道府県の売上を棒グラフで表示してください:
data = {
"都道府県": ["東京", "東京", "大阪", "大阪"],
"性別": ["男性", "女性", "男性", "女性"],
"売上": [150, 130, 120, 110]
}

次回

【保存・装飾・共有に便利】matplotlibでグラフのデザインを整える&画像として出力する方法

これまでの内容

【Python初心者向け】matplotlibでグラフを描く基本|折れ線・棒グラフの描き方

【Python可視化】散布図とカスタマイズの基本|見やすいグラフを描くためのポイント

全シリーズ一覧

【保存版】統計&Pythonデータ分析シリーズまとめ|基本〜中級をやさしく解説

コメント

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