読者です 読者をやめる 読者になる 読者になる

pandas concatとpivot_tableとシーボーンのヒートマップ

 以前ビットコインの季節性を見たときに、ピボットテーブルを使いました。最近またピボットテーブルを使おうとしたら、ブログの記録は間違っていた。というわけで、そのアップデートを一つしたいというのと、pandasのconcatで2つ統合する方法しか知らなかったのですが、いくつでも出来るということがわかったこと、そして、heatmapを使ってきれいに見せる方法というのでまぁうまいこと出来ますなということがわかりましたので、メモしておきたいと思います。

import pandas as pd
import pandas_datareader.data as pdr
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline
# 日経平均株価、ドル円、SP500の価格を取得
df225 = pdr.DataReader('NIKKEI225','fred','1990/1/1')
dfjpy = pdr.DataReader('DEXJPUS', 'fred','1990/1/1')
dfspx = pdr.DataReader('SP500','fred','1990/1/1') 
#上のシリーズを合併する
index = [df225, dfjpy, dfspx]
df = pd.concat(index, axis=1, join= 'inner').dropna()
# 合併したデータフレームを月足にする
dfm = df.resample('M').last()
# 前月比を作る
for i in dfm.columns:
    dfm['{}_chg'.format(i)] = dfm[i].pct_change()
dfm = dfm.dropna()

dfm['year'] = dfm.index.year
dfm['month'] =dfm.index.month
mtable = pd.pivot_table(dfm, 'NIKKEI225_chg', index='year', columns='month')
plt.figure(figsize=(12,8))
sns.heatmap(mtable, cmap='spectral', annot=True)

f:id:mazarimono:20161226181631p:plain

 かっこいいやん。