概要(pandas.plotは「DataFrameを即グラフ化」する最短ルート)
pandasのplotは、DataFrameやSeriesから折れ線・棒・散布図などを1行で描ける可視化機能です。内部でmatplotlibと連携して動き、デフォルトではインデックスを横軸、各数値列を縦軸とした折れ線グラフを描きます。グラフの種類はkind引数で切り替え、タイトルや軸ラベル、凡例などはmatplotlibの関数で仕上げるのが基本です。
基本の使い方(ここが重要)
最短の折れ線グラフとx/yの指定
import pandas as pd
import matplotlib.pyplot as plt
df = pd.DataFrame({
"月": ["1月","2月","3月","4月"],
"売上": [100, 120, 130, 90]
})
# デフォルト(折れ線):インデックスがx、数値列がy
df.plot()
# 列を軸に指定して1系列を明示
df.plot(x="月", y="売上", kind="line")
plt.title("月別売上推移")
plt.ylabel("売上(万円)")
plt.grid(True)
plt.show()
Pythonplotはmatplotlibへ橋渡しするラッパーで、x/yやkindを指定すると直感的に目的のグラフが得られます。
グラフの種類をkindで切り替え
# 縦棒・横棒・散布図など
df.plot(x="月", y="売上", kind="bar")
df.plot(x="月", y="売上", kind="barh")
df.plot(x="月", y="売上", kind="line")
df.plot(x="月", y="売上", kind="scatter")
Python代表的なkindにはline(折れ線)、bar(縦棒)、barh(横棒)、hist(ヒストグラム)、box(箱ひげ図)、kde/density(密度)、pie(円)、scatter(散布)、area(積み上げ)、hexbin(2次元ビニング)などがあり、plot系メソッドで網羅的に使えます。
よく使う調整(見やすさとレイアウト)
figsize・色・スタイル・凡例・タイトル
ax = df.plot(x="月", y="売上", kind="line", figsize=(6,4), color="#4F81BD", style="-o")
ax.legend(loc="best")
ax.set_title("月別売上")
ax.set_xlabel("月")
ax.set_ylabel("売上(万円)")
plt.tight_layout()
plt.show()
PythonpandasのplotはAxesを返すので、matplotlib側でラベル・凡例・余白調整を加えるのが定石です。
複数列を同時に描く・副軸を使う
df2 = pd.DataFrame({
"月": ["1月","2月","3月","4月"],
"売上": [100,120,130,90],
"費用": [70,80,85,75]
})
# 同じ軸に複数系列
df2.plot(x="月", y=["売上", "費用"], kind="line")
# 副軸(右側)で別スケールの系列
df2.plot(x="月", y="売上", kind="line")
df2.plot(x="月", y="費用", kind="line", secondary_y=True)
plt.show()
Python複数列はyにリストを渡せば重ね描きできます。secondary_y=Trueで右軸へ切り替え、スケールが違う指標を同じ図に共存させられます。
サブプロットに分ける
df2.set_index("月").plot(subplots=True, layout=(2,1), figsize=(6,6), sharex=True)
plt.show()
Pythonsubplots=Trueで列ごとに別グラフへ。layoutで行列配置、sharexで横軸共有などが可能です。
実務の勘所(時系列・カテゴリ・フォント・保存)
時系列の扱い(DatetimeIndexで軸が賢くなる)
import numpy as np
dates = pd.date_range("2025-01-01", periods=6, freq="M")
df = pd.DataFrame({"売上": np.random.randint(80,150, size=6)}, index=dates)
df.plot(kind="line")
plt.title("月次売上")
plt.show()
Pythonインデックスが日時なら軸の目盛りやラベルが自動調整され、時系列の傾向が読みやすくなります。
カテゴリ別の棒グラフ・積み上げ
cat = pd.DataFrame({
"製品": ["A","B","C"],
"1月": [10, 12, 9],
"2月": [11, 8, 13]
}).set_index("製品")
# 横に並べる棒
cat.plot(kind="bar")
# 積み上げ
cat.plot(kind="bar", stacked=True)
plt.show()
Python棒・積み上げはカテゴリの比較に向き、割合や構成の変化を掴みやすい表現です。
日本語フォントの設定(文字化け対策)
import matplotlib.pyplot as plt
plt.rcParams["font.family"] = "DejaVu Sans" # 実環境の日本語フォントに合わせて変更
df.plot(kind="line")
plt.title("売上推移(日本語)")
plt.show()
Pythonmatplotlib側でフォントを指定しておくと、日本語ラベルの文字化けを避けられます。可視化前に一度だけ設定しておくと楽です。
画像として保存(レポート連携)
ax = df.plot(x="月", y="売上", kind="line")
plt.savefig("sales.png", dpi=150, bbox_inches="tight")
Pythonsavefigでファイル出力すれば、レポートや資料へ簡単に組み込めます。
応用の型(ヒスト・箱ひげ・散布・密度)
分布を見る(ヒストグラムと箱ひげ)
s = pd.Series([1,2,2,3,3,3,4,5,5,6,7,8,9])
s.plot(kind="hist", bins=5, alpha=0.7)
plt.title("スコア分布")
plt.show()
s.plot(kind="box")
plt.title("スコアの箱ひげ図")
plt.show()
Pythonヒストは値の偏り、箱ひげは中央値・四分位・外れ値を俯瞰できます。
相関の可視化(散布図と密度)
df = pd.DataFrame({"x": [1,2,3,4,5], "y": [2,4,2,5,7]})
df.plot(kind="scatter", x="x", y="y")
plt.title("散布図")
plt.show()
df.plot(kind="kde") # 連続値の密度推定
plt.title("密度プロット")
plt.show()
Python散布図で関係性、kde/densityで分布の滑らかな形を捉えます。
例題で身につける(定番から一歩先まで)
例題1:折れ線→棒→散布を一気に試す
import pandas as pd
import matplotlib.pyplot as plt
df = pd.DataFrame({"月": ["1月","2月","3月","4月"], "売上": [100,120,130,90]})
df.plot(x="月", y="売上", kind="line"); plt.show()
df.plot(x="月", y="売上", kind="bar"); plt.show()
df.plot(x="月", y="売上", kind="scatter"); plt.show()
Pythonpandas.plotはkindの切り替えだけで多様なグラフに展開でき、学習コストが低いのが魅力です。
例題2:複数系列を副軸で見やすく
import pandas as pd
import matplotlib.pyplot as plt
df = pd.DataFrame({
"月": ["1月","2月","3月","4月"],
"売上": [100,120,130,90],
"利益": [30,25,35,20]
})
ax = df.plot(x="月", y="売上", kind="line")
df.plot(x="月", y="利益", kind="line", secondary_y=True, ax=ax)
ax.set_title("売上と利益"); plt.show()
Pythonスケールが異なる系列を重ねる場合、副軸で視認性を確保します。
例題3:時系列×複数列をサブプロットに分割
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
dates = pd.date_range("2025-01-01", periods=6, freq="M")
df = pd.DataFrame({"売上": np.random.randint(80,150,6), "費用": np.random.randint(60,120,6)}, index=dates)
df.plot(subplots=True, layout=(2,1), figsize=(6,5), sharex=True)
plt.tight_layout(); plt.show()
Python列ごとの特徴を分けて見たい時はsubplotsが有効です。
例題4:カテゴリ×積み上げ棒で構成比を把握
import pandas as pd
import matplotlib.pyplot as plt
cat = pd.DataFrame({
"製品": ["A","B","C"],
"1月": [10,12,9],
"2月": [11,8,13]
}).set_index("製品")
cat.plot(kind="bar", stacked=True)
plt.title("製品別・月別の構成"); plt.show()
Python積み上げ棒は全体の推移と各系列の寄与を同時に把握できます。
まとめ
pandas.plotは「DataFrameからそのままグラフ」を作る入口で、kindで種類を切り替え、matplotlibで仕上げるのが型です。x/yの指定で意図した軸を明示し、figsize・色・凡例・タイトル・副軸・サブプロットで見やすさを整える。時系列はDatetimeIndexで軸が賢くなり、カテゴリは棒・積み上げで比較しやすい。日本語フォントはmatplotlib設定で解決、必要なら画像保存でレポートへ連携。基本の型を押さえれば、初心者でも短く、読みやすく、実務で通用する可視化が作れます。
