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

bitcoinの季節性

苦しみながらやっているpythonですが、エクセルくらいには使えるようになってきました。ちょっと前に悩んでいたことも本をパラパラめくっていたり、ウェブで調べていると、そういうことだったのかという解決法が見つかって、最近は楽しいです。最近の研究成果をビットコインのシーズングラフにして見せてみます。

f:id:mazarimono:20160901185029p:plain

 これはブルームバーグでシーズングラフって呼ばれる奴なんですが、coindeskからcsvをダウンロードして、ぱちぱちっと作れるようになりました。

 以前、時間がどうのこうのと悩んでいたのは、どうも日付と時間が出ているところが、文字列と認識されていたことから起こる問題でもあったようでした。僕だけかもしれませんが、時系列の数値を読み込んでも、日付と認識されない問題があるのではないかと最近気づき、その値、例えばインデックスにおいている文字列をdatetimeに変換するという作業を読み込み時に入れたら、インデックスをdatetimeで書かれているみたいに扱えるようになりました。あとは、resampleで月足にして、indexから年と月を取り出し、前月比を出して、pivot_tableでゴリッとやれば出来上がりです。下に例として書いてみます。

import pandas as pd

df = pd.read_csv('mogumogu', index_col='Date')

df.index = df.index.to_datetime() #datetimeにする

df1 = df.resample('M') #月足にする

df1['year'] = df1.index.year  # 年の列をつくる

df1['month'] = df1.index.month # 月の列をつくる

df1['change'] = df1['last_price'].pct_change() # 前月比の列をつくる

df1.pivot_table(['change'], columns='month', index='year') #ピボットテーブルを作る

下のto_datetime()ってやるだけで、df['2015']みたいな切り出しができるようになったわ。というか、今までなんでできないのだろうと思っていたのですが、読み込み方が間違っていたわけですね。

f:id:mazarimono:20160901185659p:plain

という感じで季節性を見ると7−9月はイマイチみたいです。そういえば、今日から9月ですね。買い時を探すべきでしょうか?