• このエントリーをはてなブックマークに追加

FXのヒストリカルデータを取得するために、私はいつもDukascopyを利用している。

おかしな日付

ダウンロードしたデータをプロットしてみたら、おかしなことになった。

self.csv_data = pd.read_csv(self.csv_path, index_col=0, parse_dates=True, header=0)

dukascopyの日時のフォーマットは、03.07.2017 00:00:00.000 のようになっている。
なので、2017年7月3日をpandasは間違えて 2017年3月7日としてパースしてしまったようだ。

正しい日付にパース

こういう場合は、自前のパーサを作成して、pandas.read_csv に date_parser optionの引数としてパーサを渡すことで解決する。

f = '%d.%m.%Y %H:%M:%S.%f'
my_parser = lambda date: pd.datetime.strptime(date, f)
self.csv_data = pd.read_csv(self.csv_path, index_col=0, parse_dates=True, header=0,
                           date_parser=my_parser)