LoginSignup
36
34

More than 5 years have passed since last update.

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

Last updated at Posted at 2014-05-09

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

散布図

前回と同様 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/

36
34
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
36
34