pandasのデータ操作に慣れる(2)

Python+金融 プロジェクト

前回(pandasのデータ操作に慣れる(1))に引き続き、pandasのデータ操作についてまとめていきます。

※無駄に長くなるのを避けるため、出力結果は一部加工していますことをご承知おきください

スポンサーリンク

データの結合

ドル円相場と日経平均株価のデータベースを結合してmarketというデータを作成してみます。

まずは為替と株のデータを取得してきます。endが指定されていないので、指定日(2015-1-1)から、直近までのデータを取ってきてくれるはずです。

DEXJPUS はドル円レートを指定する引数、fredは使用するデータベースです。詳細はDataReaderの公式ドキュメントを読みましょう。

>>>import padas as pd
>>>import pandas_datareader as web
>>>jpyusd = web.DataReader('DEXJPUS', 'fred', '2015-1-1')
>>>jpyusd
            DEXJPUS
DATE               
2015-01-01      NaN
2015-01-02   120.20
2015-01-05   119.64
...             ...
2017-12-20   113.29
2017-12-21   113.42
2017-12-22   113.30

>>>N225 = web.DataReader('NIKKEI225','fred','2015-1-1')
>>>N225
            NIKKEI225
DATE                 
2015-01-01        NaN
2015-01-02        NaN
2015-01-05   17408.71
...               ...
2017-12-27   22911.21
2017-12-28   22783.98
2017-12-29   22764.94

concatを使って結合し、marketというデータを作成します。

>>>market = pd.concat([N225, jpyusd], axis=1)
>>>market
2015-01-01        NaN      NaN
2015-01-02        NaN   120.20
2015-01-05   17408.71   119.64
...                        ...
2017-12-27   22911.21      NaN
2017-12-28   22783.98      NaN
2017-12-29   22764.94      NaN

NaNデータを消す

株も為替も休みの日、株式市場は休みだけど為替はやってる日、為替はやっていないけど株式市場はやっている日などが混在していて、使い勝手が悪いことがあります。その場合はdropna()でNaNを含む行を削除できます。

>>> market=pd.concat([N225, jpyusd], axis=1).dropna()
>>> market
            NIKKEI225  DEXJPUS
DATE                          
2015-01-05   17408.71   119.64
2015-01-06   16883.19   118.26
2015-01-07   16885.33   119.52
...                        ...
2017-12-20   22891.72   113.29
2017-12-21   22866.10   113.42
2017-12-22   22902.76   113.30
スポンサーリンク

フォローする