グラフしたい(pandas.DataFrame.plot

 1import pandas
 2import matplotlib.pyplot as plt
 3
 4# 日本語フォントの設定
 5import japanize_matplotlib
 6# or
 7# from matplotlib import rcParams
 8# rcParams["font.family"] = "IPAexGothic"
 9
10fig, axs = plt.subplots()
11data.plot(ax=axs)
12fig.savefig("ファイル名")

pd.DataFrame.plotでグラフを作成できます。 デフォルトでは、数値データのみのカラムがすべて折れ線グラフで表示されます。

このメソッドはmatplotlibのラッパー的なものなので、matplotlibのインポートが必要です。 また、日本語を表示したい場合はjapanize_matplotlibをインポートするか、matplotlib.rcParamsで日本語フォントの設定が必要です。

グラフの種類を変更したい(kind

1# ヒストグラム
2data.plot(kind="hist")
3
4# 散布図
5data.plot(
6  kind="scatter",
7  x="x軸のカラム名",
8  y="Y軸のカラム名"
9)

kindオプションでグラフの種類を変更できます。 指定できるグラフの種類は ヒストグラム(hist)、 散布図(scatter)、 棒グラフ(bar / barh)、 箱ひげ図(box)など全11種類あります。

散布図(scatter)など、一部のグラフ種類ではX軸、Y軸の指定が必要です。

タイトルしたい(title / xlabel / ylabel

 1data.plot(
 2  title="グラフのタイトル",
 3  xlabel="X軸のタイトル",
 4  ylabel="Y軸のタイトル",
 5)
 6
 7# matplotlibで設定する場合
 8ax = data.plot()
 9ax.set_title("グラフのタイトル")
10ax.set_xlabel("X軸のタイトル")
11ax.set_ylabel("Y軸のタイトル")

titlexlabelylabelオプションで、グラフのタイトルや軸タイトルを表示できます。

上記の設定はこの設定と等価です。

サブプロットしたい(subplots

 1data.plot(subplots=True)
 2
 3data.plot(
 4  subplots=True,
 5  figsize=(横サイズ, 縦サイズ),
 6  layout=(行数, 列数),
 7)
 8
 9# matplotlibで設定する場合
10fig, axs = plt.subplots(
11    figsize=(8, 12),
12    nrows=2,
13    ncols=3,
14)
15data.plot(
16    ax=axs[0, 0],  # 1行目1列目
17)
18data.plot(
19    ax=axs[0, 1],  # 1行目2列目
20)
21# ... (以下、必要な分だけ繰り返す)

subplots=Trueオプションで、複数のカラムのデータをそれぞれのサブプロットに表示できます。 figsizeオプションで図の全体サイズを変更できます。横サイズ/縦サイズの単位はインチです。 layoutオプションでサブプロットの行数と列数を変更できます。 デフォルトは縦配置です。 サブプロットの詳細はmatplotlib.pyplot.subplotsも参照してください。

目盛りしたい(grid

 1data.plot(grid=True)
 2
 3data.plot(
 4  grid=True,
 5  xticks=range(0, 1000, 50),
 6  yticks=range(-5, 15, 1)
 7)
 8
 9# matplotlibで設定する場合
10ax = data.plot()
11ax.grid(True)
12ax.set_xticks(range(0, 1000, 50))
13ax.set_yticks(range(-5, 15, 1))

grid=Trueオプションで、目盛り(補助目盛り)を表示できます。 xticksyticksオプションで目盛り間隔を変更できます。 目盛りの詳細はmatplotlib.pyplot.gridも参照してください。

表示範囲したい(xlim / ylim

1data.plot(
2  xlim=(x軸の下限値, x軸の上限値),
3  ylim=(y軸の下限値, y軸の上限値)
4)
5
6# matplotlibで設定する場合
7ax = data.plot()
8ax.set_xlim(x軸の下限値, x軸の上限値)
9ax.set_ylim(y軸の下限値, y軸の上限値)

xlimylimオプションで、X軸とY軸それぞれの下限値と上限値を変更できます。

対数グラフしたい(logx / logy / loglog

1data.plot(logx=True)
2data.plot(logy=True)
3data.plot(loglog=True)
4
5# matplotlibで設定する場合
6ax = data.plot()
7ax.set_xscale("log")
8ax.set_yscale("log")

logx=Truelogy=trueオプションで、片対数グラフに変更できます。 loglog=Trueオプションで、両対数グラフに変更できます。

loglog=Trueは、logx=True, logy=Trueと同等です。

詳細設定したい(ax

 1import matplotlib.pyplot as plt
 2import japanize_matplotlib
 3
 4# データフレームを用意する(ここでは省略)
 5# data: pd.DataFrame
 6
 7# matplotlib.pyplotで FigureとAxesオブジェクトを作成する
 8fig, axs = plt.subplots()
 9
10# pandasでプロットを作成する
11data.plot(
12    kind="scatter",
13    x="X軸のカラム名",
14    y="Y軸のカラム名",
15    ax=axs  # 描画先のAxesオブジェクトを指定する
16    )

axオプションでmatplotlibAxesオブジェクトを指定できます。 グラフをより詳細に設定したい場合は、matplotlib.pyplot.axesに対して変更を加えます。

参考

matplotlibの使い方は、まず、公式ドキュメントのThe lifecycle of a plotに目を通すのがよいと思います。 とくにA note on the explicit vs implicit interfacesは、ウェブに転がっている他のコードを読むのに役立つ情報だと思います。

その他のグラフ

実際に使う時ができたら追記します。

  1. pandas.DataFrame.plot.area: 面グラフ

  2. pandas.DataFrame.plot.bar: 棒グラフ。重みのついたヒストグラムとしても使えるはず。

  3. pandas.DataFrame.plot.barh: 棒グラフ(横)

  4. pandas.DataFrame.plot.box: 箱ひげ図。

  5. pandas.DataFrame.plot.hexbin: マス目が六角形の図。ヒートマップを作るとカッコ良さそう。六角形にするのに見た目以外の意味はあるのだろうか?

  6. pandas.DataFrame.plot.density: ガウシアンを仮定したKDE分布関数

  7. pandas.DataFrame.plot.kde: 上とどう違うんだろう?

  8. pandas.DataFrame.plot.line: 折れ線グラフ

  9. pandas.DataFrame.plot.pie: 円グラフ