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を使ったデータ処理

Pythonによるデータ分析入門 ―NumPy、pandasを使ったデータ処理