データ分析でよく使われるpandasには、実はグラフ描画機能も内蔵されています。
この記事では、pandasのplot()メソッドとmatplotlibを組み合わせて、実データから手軽に、かつカスタマイズ性の高いグラフを描く方法を紹介します。
🧱 pandasとmatplotlibの連携とは?
通常、matplotlibでグラフを描くにはplt.plot()などを使いますが、pandasのDataFrameやSeriesには、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や集計データも簡単に可視化可能 |
📝 練習問題
- 以下のデータから
kind="bar"を使って月別売上グラフを描いてください:
df = pd.DataFrame({
"月": ["1月", "2月", "3月"],
"売上": [100, 120, 90]
})- 以下のデータを
pivot()して、性別ごとに各都道府県の売上を棒グラフで表示してください:
data = {
"都道府県": ["東京", "東京", "大阪", "大阪"],
"性別": ["男性", "女性", "男性", "女性"],
"売上": [150, 130, 120, 110]
}次回
【保存・装飾・共有に便利】matplotlibでグラフのデザインを整える&画像として出力する方法
これまでの内容
【Python初心者向け】matplotlibでグラフを描く基本|折れ線・棒グラフの描き方

コメント