0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【初心者向け】10行以内のスクリプト(3.datareaderでデータ取得・csv化)

0
Posted at

【初心者向け】10行以内のスクリプト(3.datareaderでデータ取得・csvへ書き込み)

pythonで色々なライブラリを使えば、「少ないコードでもちょっとした事が出来て、少なければ5行程でもちょっとしたスクリプトが作れ、便利だな。」と思ったので、pythonやその他、コマンドを羅列しただけのものも出てくるかも知れませんが、10行程のスクリプトを不定期で投稿してみようと思います。

第3回として、datareaderでデータを取得、csvへの書き込みを投稿したいと思います。

社内でcsvやexcelのデータを渡されたり、ネット上で公開されているでもjson等に並び、csvが公開されている事例が多いと思います。

取得するデータは、fredの日経225の2016年1月1日からとしました。
このデータを、pandasのデータフレームに格納、csvに書き込みます。

最後、補足として、plot関数でプロット。

【環境】
Linux: debian10
python: 3.7.3
pandas: 1.0.3
pandas-datareader: 0.8.1


1.データの取得・データフレームへの格納

日経225データ取得のdatareaderの取得は、以下の様な構文です。
pdr.DataReader('NIKKEI225' ,'fred' ,start)

csvへの書き込みは、pandasで書き込みます。
構文は、データフレーム.to_csv('書き込むファイル名.csv')

コードはjupyterで実行しました。

datareader

# datareaderでfredからNikkei225のデータを取得して、csvに書き込み
# outfile = ('./nikkei225_20200428.csv')
import pandas as pd
from pandas_datareader import data, wb
import datetime
import matplotlib.pyplot as plt

# データ取得・データフレームに格納
start = datetime.datetime(2016, 1 ,1)
df_nikkei225 = pdr.DataReader('NIKKEI225' ,'fred' ,start)

# csvに書き込み
df_nikkei225.to_csv('./nikkei225_20200428.csv')

上記、スクリプトのデータフレームへの格納で、1行目で取得する開始日を指定、2行目でfredから日経225を1行目で指定した日から取得、データフレームにする記述をしました。

start = datetime.datetime(2016, 1 ,1)
df_nikkei225 = pdr.DataReader('NIKKEI225' ,'fred' ,start)

データフレームの名前は、「df_nikkei225」としましたが、実際は何でも良いです。

csvへの出力はカレントディレクトリに、「nikkei225_20200428.csv」として、出力しました。

2.取得したデータの内容

取得したデータを見てみようと思います。
「df_nikkei225」というのは、先程のコードで使ったデータフレームです。

データフレーム

df_nikkei225
# 格納されたデータフレームの内容
 	NIKKEI225
DATE 	
2016-01-01 	NaN
2016-01-04 	18450.98
2016-01-05 	18374.00
2016-01-06 	18191.32
2016-01-07 	17767.34
... 	...
2020-04-22 	19137.95
2020-04-23 	19429.44
2020-04-24 	19262.00
2020-04-27 	19783.22
2020-04-28 	19771.19

1128 rows × 1 columns

【補足】として、グラフを描画してjpgで出力してみようと思います。
以上のデータをプロットする最も簡単な方法は、2行のコードで出来ます。
最初に「import matplotlib.pyplot as plt」で、matplotlibをインポートしました。

その状態で「データフレーム名.plot()」、データフレームが「df」の場合は、df.plot()でプロット出来ます。
例として、グラフをjpgで出力する場合、plt.savefig("出力するファイル名.jpg")

plot

# グラフ描画・出力
df_nikkei225.plot()
plt.savefig("nikkei225_20200428.jpg")

nikkei225_20200428.jpg

データの情報

df_nikkei225.info()

<class 'pandas.core.frame.DataFrame'>
DatetimeIndex: 1128 entries, 2016-01-01 to 2020-04-28
Data columns (total 1 columns):
 #   Column     Non-Null Count  Dtype  
---  ------     --------------  -----  
 0   NIKKEI225  1056 non-null   float64
dtypes: float64(1)
memory usage: 17.6 KB

df_nikkei225.isnull().sum()

NIKKEI225    72
dtype: int64

df_nikkei225.head()

DATE 	
2016-01-01 	NaN
2016-01-04 	18450.98
2016-01-05 	18374.00
2016-01-06 	18191.32
2016-01-07 	17767.34

取引が無い日はデータはありませんが、取得したデータをそのままプロットしましたので、実際のグラフとしては、ひとまず欠損値の処理をする事になると思います。
それについては、別記事で触れたいと思います。

以上、datareaderでデータの取得・csv化でした。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?