pythonのpandasとnotebookを使ってデータ分析(3)
それでは、前回までの続きで「matplotlib」でグラフを表示してみましょう。
必要なモジュールのインポートと、表示するデータをセルに入力する。
%matplotlib inline import pandas import matplotlib.pyplot as plt
df = pandas.DataFrame({ 'x': [6.559112404564946264e-01, 6.013845740818111185e-01, 4.449591514877473397e-01, 3.557250387126167923e-01, 3.798882550532960423e-01, 3.206955701106445344e-01, 2.600880460776140990e-01, 2.245379618606005157e-01], 'y': [1.397354195522357567e-01, 1.001406990711011247e-01, 5.173231204524778720e-02, 3.445520251689743879e-02, 3.801366557283047953e-02, 2.856782588754304408e-02, 2.036328213585812327e-02, 1.566228252276009869e-02]})
グラフに必要なのは、
df.plot()
とするだけでも表示されちゃいます。
素晴らしい!!
でも、これはpandasがplotを協力してくれています。
次の展開の準備として、「matplotlib」を直接使って同じグラフを4つ表示してみましょう。
(散布図だと向きが逆になります。)
fig = plt.figure(figsize=(15,6)) ax1 = fig.add_subplot(2, 2, 1) ax2 = fig.add_subplot(2, 2, 2, sharey=ax1) ax3 = fig.add_subplot(2, 2, 3, sharey=ax1) ax4 = fig.add_subplot(2, 2, 4, sharey=ax1) ax1.plot(df['x'], df['y'], "ro") ax2.plot(df['x'], df['y'], "ro") ax3.plot(df['x'], df['y'], "ro") ax4.plot(df['x'], df['y'], "ro") ax1.set_title("ols fit") ax2.set_title("Linear exp fit") ax3.set_title("log fit") ax4.set_title("parabora fit") ax1.grid() ax2.grid() ax3.grid() ax4.grid()
こんな感じになりました。
少し説明しますと、
- 「figure」 はキャンバス
- 「axes」 はグラフ
- 「sharey」 は、グラフ間で縦軸の共有
- 「plot」は、グラフの描画
- 「matplotlib」の場合は、「x」「y」を分けて渡します。
- 「set_title」は、そのまま
- 「grid」は、補助線の追加
こんな感じに理解しました。
最初はfigure axes axisなどを混同して、混在して、混乱しました。
こちらのサイトを参考にさせて頂いて、自分でも整理しました。
http://bicycle1885.hatenablog.com/entry/2014/02/14/023734
また、コードの書き方にも
- 対話型
- オブジェクト型
の2つの方法があり、余計にややこしいです。
中々思った通りのグラフにならなくて、ハマりました。
自分は、オブジェクト型の方が分かりやすかったので、こちらでいきますが
対話型も分かっていた方が、他のサイトを見た時に
あーこれは、対話型でこう書いてるのでオジェクト型ではこうやればいいよね。
という事が出来るようになるのでいいと思います。
ところで、何故同じグラフを4つ作ったのか?
それは他でもなく、エクセルをぼ・・・
この4つの散布図の中に、線形近似、指数近似、対数近似、多項式近似の曲線を引いて分析を行っていきます。
それでは、次回は線形近似から行きたいと思います。