グラフしたい(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をインポートするとよいです。
注釈
検索するとmatplotlib(matplotlib.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 )
title、xlabel、ylabelオプションで、グラフのタイトルや軸タイトルを表示できます。
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オプションで、目盛り(補助目盛り)を表示できます。
xticks、yticksオプションで目盛り間隔を変更できます。
目盛りの詳細はmatplotlib.pyplot.gridも参照してください。
表示範囲したい(xlim / ylim)
1data.plot(
2 xlim=(x軸の下限値, x軸の上限値),
3 ylim=(y軸の下限値, y軸の上限値)
4 )
xlim、ylimオプションで、X軸とY軸それぞれの下限値と上限値を変更できます。
対数グラフしたい(logx / logy / loglog)
1data.plot(logx=True)
2data.plot(logy=True)
3data.plot(loglog=True)
logx=True、logy=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オプションでmatplotlibのAxesオブジェクトを指定できます。
グラフをより詳細に設定したい場合は、matplotlib.pyplot.axesに対して変更を加えます。
参考
matplotlibの使い方は、まず、公式ドキュメントのThe lifecycle of a plotに目を通すのがよいと思います。
とくにA note on the explicit vs implicit interfacesは、ウェブに転がっている他のコードを読むのに役立つ情報だと思います。
その他のグラフ
実際に使う時ができたら追記します。
pandas.DataFrame.plot.bar: 棒グラフ。重みのついたヒストグラムとしても使えるはず。
pandas.DataFrame.plot.barh: 棒グラフ(横)
pandas.DataFrame.plot.box: 箱ひげ図。
pandas.DataFrame.plot.hexbin: マス目が六角形の図。ヒートマップを作るとカッコ良さそう。六角形にするのに見た目以外の意味はあるのだろうか?
pandas.DataFrame.plot.density: ガウシアンを仮定したKDE分布関数
pandas.DataFrame.plot.kde: 上とどう違うんだろう?
pandas.DataFrame.plot.line: 折れ線グラフ