Python
matplotlib
pandas

matplotlib (+ pandas) によるデータ可視化の方法 (5)

More than 3 years have passed since last update.

前回まで延々と続いていたデータ可視化の話も今回で最終回です。


散布図

前回と同様 pydata-book のデータを利用します。

pydata-book/ch08/macrodata.csv

https://github.com/pydata/pydata-book/blob/master/ch08/macrodata.csv

import numpy as np

from pandas import *
import matplotlib.pyplot as plt

# CSV データを読み込む
macro = read_csv('macrodata.csv')

# いくつかの列をピックアップする
data = macro[['cpi', 'm1', 'tbilrate', 'unemp']]

# .diff() メソッドは値をひとつ前の行からの差分に変更する
# 先頭が NaN になるので .dropna() メソッドで取り除く
trans_data = np.log(data).diff().dropna()

# trans_data は前行からの変化を示すデータセットになる
# 最後の 5 行を表示
print( trans_data[-5:] )
# =>
# cpi m1 tbilrate unemp
# 198 -0.007904 0.045361 -0.396881 0.105361
# 199 -0.021979 0.066753 -2.277267 0.139762
# 200 0.002340 0.010286 0.606136 0.160343
# 201 0.008419 0.037461 -0.200671 0.127339
# 202 0.008894 0.012202 -0.405465 0.042560

# 2 つの列から散布図をプロッティング
plt.scatter(trans_data['m1'], trans_data['unemp'])

plt.show()
plt.savefig("image.png")

image.png


散布図行列

一連の変数のすべてのペアを散布図にしたのが散布図行列です。 scatter_matrix 関数でこれを作成することができます。

# 散布図行列を生成

from pandas.tools.plotting import scatter_matrix
scatter_matrix(trans_data, diagonal='kde', color='k', alpha=0.3)

plt.show()
plt.savefig("image2.png")

image2.png

任意の 2 つの 1 次元データの相関を見るとき、シンプルで強力な方法として役立ちます。


参考

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

http://www.oreilly.co.jp/books/9784873116556/