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

1import pandas
2import matplotlib.pyplot as plt
3import japanize_matplotlib
4
5fig, axs = plt.subplots()
6data.plot(ax=axs)
7fig.savefig("ファイル名")

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

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

注釈

検索するとmatplotlibmatplotlib.pyplot)を使ってグラフを作成する記事が多くヒットします。 せっかくPandasを使っているので、ここではできるだけPandasを使った方法を試してみようと思います。

種類を変更したい(kind

1data.plot(kind="hist")
2data.plot(kind="scatter", x="x軸のカラム名", y="Y軸のカラム名")

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

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

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

1data.plot(
2    title="グラフのタイトル",
3    xlabel="X軸のタイトル",
4    ylabel="Y軸のタイトル",
5    )

titlexlabelylabelオプションで、グラフのタイトルや軸タイトルを表示できます。 japanize_matplotlibをインポートするだけで、日本語フォントを扱えるようになります。

重要

軸タイトルは単位も含めて設定しておくとよいです。

サブプロットしたい(subplots

1data.plot(subplots=True)
2
3data.plot(
4    subplots=True,
5    figsize=(横サイズ, 縦サイズ),
6    layout=(行数, 列数),
7    )

subplots=Trueオプションで、複数のカラムのデータをそれぞれのサブプロットに表示できます。 figsizeオプションで図の全体サイズを変更できます。横サイズ/縦サイズの単位はinchです(dpi=72)。 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    )

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

表示範囲したい(xlim / ylim

1data.plot(
2    xlim=(x軸の下限値, x軸の上限値),
3    ylim=(y軸の下限値, y軸の上限値)
4    )

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

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

1data.plot(logx=True)
2data.plot(logy=True)
3data.plot(loglog=True)

logx=Truelogy=trueloglog=Trueオプションで片対数グラフや両対数グラフに変更できます。 loglog=Truelogx=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: 円グラフ