Pythonでのプロットと可視化(pandas編) 〜 pandas.Seriesのplot
前回までは連続してmatplotlibを使った可視化/plotを学習してきた。
今回からはpandasを使用した可視化を学習する。
なお、pandasはこの時点での最新版0.19.1を使用し、matplotlibはこの時点での最新版1.5.3を使用する。
また、pandasの代表的なクラスにはSeriesとDataFrameがあるので、その2つの形式のデータについて学習していく。
◎折れ線
1.pandas.Seriesデータの折れ線グラフを作成する
まずは単純な折れ線グラフのサンプルコード。
#coding:utf-8 import numpy as np import matplotlib.pyplot as plt import pandas as pd # 1.配列データの準備 data = np.random.randn(1000).cumsum() # 2.Series形式へ変換 s = pd.Series(data) # 3.可視化 s.plot()
「Pythonでのプロットと可視化(matplotlib編) 〜 1.基本と概要」で学習したmatplotlibでの可視化と殆ど同じ。
簡単なものであれば、pandas.Series.plot()を実行すれば可視化してくれる。
それでは、「Pythonでのプロットと可視化(matplotlib編) 〜 2.図とサブプロット」で学習したように、描画領域を複数用意して描画するにはどうすれば良いのだろうか。
これも同じようにサブプロットを準備することに変わりはない。そして、準備したサブプロットオブジェクトをpandas.Series.plot()関数の引数として渡す。
サンプルコードは次。
#coding:utf-8 import numpy as np import matplotlib.pyplot as plt import pandas as pd # 1.配列データの準備 data = np.random.randn(1000).cumsum() # 2.Series形式へ変換 s = pd.Series(data) # 3.可視化 # 3-1.サブプロットの準備 fig = plt.figure() ax = fig.add_subplot(1, 1, 1) # 3-2.作成したサブプロットをplot関数の引数に指定して可視化実行 s.plot( ax = ax, label='random walk', style='k', alpha=1, kind='line', use_index=True, grid=True ) plt.legend(loc='best')
実行結果は先程と同様のグラフとなる。
※)データが乱数なのでチャートの形は実行毎に異なる。
次に、サブプロットを増やして、それぞれにグラフを作成してみる。
#coding:utf-8 import numpy as np import matplotlib.pyplot as plt import pandas as pd # 1.配列データの準備 data1 = np.random.randn(1000).cumsum() # 2.Series形式へ変換 s1 = pd.Series(data1) # 3.可視化 # 3-1-1.サブプロットの準備1 fig = plt.figure() ax = fig.add_subplot(2, 1, 1) # 3-1-2.作成したサブプロットをplot関数の引数に指定して可視化実行 s1.plot( ax = ax, label='random walk', style='k', alpha=1, kind='line', use_index=True, grid=True ) plt.legend(loc='best') # 異なるデータの準備 data2 = np.random.randn(1000).cumsum() s2 = pd.Series(data2) # 3-2-1.サブプロットの準備2 ax = fig.add_subplot(2, 1, 2) # 3-2-2.作成したサブプロットをplot関数の引数に指定して可視化実行 s2.plot( ax = ax, label='random walk', style='k', alpha=1, kind='line', use_index=True, grid=True ) plt.legend(loc='best')
同一ウィンドウへ複数サブプロットを作成する場合、サブプロットは都度作成するのではなく、一回で作成した方が楽。
plt.subplots()を使用して一回で作成するのが次。
この場合、ラベルはplt.legend()で実行すると最後のサブプロットにしかラベルが貼られないため、各サブプロット毎にax[0].legend()などとしてラベルを付与する。
#coding:utf-8 import numpy as np import matplotlib.pyplot as plt import pandas as pd # 1.配列データの準備 data1 = np.random.randn(1000).cumsum() # 2.Series形式へ変換 s1 = pd.Series(data1) # 3.可視化 # 3-1-1.サブプロットの準備1(複数のサブプロットを一度に作成) fig, axes = plt.subplots(2,1) # 3-2-1.作成したサブプロットをplot関数の引数に指定して可視化実行 s1.plot( ax = axes[0], label='random walk', style='k', alpha=1, kind='line', use_index=True, grid=True ) axes[0].legend(loc='best') # 異なるデータの準備 data2 = np.random.randn(1000).cumsum() s2 = pd.Series(data2) # 3-2-2.作成したサブプロットをplot関数の引数に指定して可視化実行 s2.plot( ax = axes[1], label='random walk', style='k', alpha=1, kind='line', use_index=True, grid=True ) axes[1].legend(loc='best')
以上。
Pythonによるデータ分析入門 ―NumPy、pandasを使ったデータ処理
- 作者: Wes McKinney,小林儀匡,鈴木宏尚,瀬戸山雅人,滝口開資,野上大介
- 出版社/メーカー: オライリージャパン
- 発売日: 2013/12/26
- メディア: 大型本
- この商品を含むブログ (19件) を見る