
Pythonで日経の指数公式サイトのCSVファイルを読み込んでpandas.DataFrame形式のデータに変換する
日経平均株価の株価データはざまざまなサイトで提供されていますが、この記事では本家本元である日本経済新聞社の指数公式サイトの株価データを読み込んでpandas.DataFrame形式のデータに変換する方法について紹介します。
日経平均株価のデータ取得場所について
まずは、日経の指数公式サイトからダウンロードして任意の場所に格納します。
Pythonではダウンロードも自動化できますが今回は割愛します。
日経平均株価は次のリンクから取得できます。https://indexes.nikkei.co.jp/nkave/index/profile?idx=nk225
日次の時系列データは「日次データ(CSV)」として公開されています。ファイル名は次の通りです。
nikkei_stock_average_daily_jp.csv
ソースコードと実行結果
import pandas as pd
def readCSV_forNikkei(**kwargs):
file = kwargs['file']
TEMP = pd.read_csv(file, encoding='shift_jis', skipfooter=1, engine='python')
TEMP.index = pd.to_datetime(TEMP['データ日付'].astype(str))
DATA = pd.DataFrame(index=TEMP.index)
DATA.index.name = 'Date'
DATA['Open'] = TEMP['始値']
DATA['High'] = TEMP['高値']
DATA['Low'] = TEMP['安値']
DATA['Close'] = TEMP['終値']
return DATA
次のようにreadCSV_forNikkei関数を呼び出して実行してください。
フルパスのファイル名は「\」を含むため先頭にrを付けてraw stringsとして与えます。
DATA = readCSV_forNikkei(file=r'(フルパスのファイル名、~.csv)')
print(DATA.head(5))
すると、次のような結果が表示されます。
Open High Low Close
Date
2020-01-06 23319.76 23365.36 23148.53 23204.86
2020-01-07 23320.12 23577.44 23299.92 23575.72
2020-01-08 23217.49 23303.21 22951.18 23204.76
2020-01-09 23530.29 23767.09 23506.15 23739.87
2020-01-10 23813.28 23903.29 23761.08 23850.57
ソースコードの解説
CSVファイルを読み込むにはpandas.read_csv関数を使用します。
日経平均株価の時系列データのCSVファイルは、文字コードがShift_JIS、ヘッダーとフッターがある、といった特徴があるため、オプションを指定して読み込みます。
また日本語を含むことによる警告への対処としてengineを指定します。
なお、日付が文字列として認識されてしまう書式のため、pandas.to_datetime関数でdatetime型に変換してindexに利用します。
データ加工のために元のデータを直接加工せずに出力用に別のDataFrameを作成しています。
公開されているデータは突然として形式変更されることもあるため、データ加工の過程を確認しやすくしておくことが大切です。
参考
pandas.read_csvのリファレンス
https://pandas.pydata.org/docs/reference/api/pandas.read_csv.html
pandas.to_datetimeのリファレンス
https://pandas.pydata.org/docs/reference/api/pandas.to_datetime.html