Я пытался преобразовать данные тиков из GainCapital в OHLC в Python, но у меня возникли проблемы
Ссылка на источник данных здесь http://ratedata.gaincapital.com/
Я ввел свой код следующим образом:
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
import mpl_finance
from datetime import *
def conv_str_to_datetime(x):
return(datetime.strptime(x, '%Y/%m/%d %H:%M:%S'))
df = pd.read_csv('USD_JPY_Week3.csv', names=['lTid', 'cDealable', 'CurrencyPair', 'RateDateTime','RateBid','RateAsk'],
converters={'RateDateTime': conv_str_to_datetime}) # or change 'converters' to 'parse_dates=True' here
grouped = df.groupby('CurrencyPair')
ask = grouped['RateAsk'].resample('15Min').ohlc()
bid = grouped['RateBid'].resample('15Min').ohlc()
pandas.concat([ask, bid], axis=1, keys=['RateAsk', 'RateBid'])
Когда я использую converters
, я получаю:
ValueError: данные времени 'RateDateTime' не соответствуют формату '% Y /% m /% d% H:% M:% S'
Когда я заменяю его на parse_dates=True
, Python возвращает:
TypeError: Действителен только с DatetimeIndex, TimedeltaIndex или PeriodIndex, но получил экземпляр RangeIndex
Я полностью сбит с толку этим и был бы очень признателен, если бы кто-нибудь мог помочь мне заставить мой код работать.
введите описание изображения здесь
Обратите внимание, что на скриншоте я выделил красными кружками различия между отображением даты и времени одной и той же ячейки, это может быть одной из причин этого, но я не уверен
Первые 10 строк файла находятся здесь:
lTid cDealable CurrencyPair RateDateTime RateBid RateAsk
6858533811 D USD/JPY 00:06.4 110.585 110.605
6858534097 D USD/JPY 03:10.1 110.584 110.604
6858534127 D USD/JPY 03:30.1 110.583 110.603
6858534151 D USD/JPY 04:11.6 110.58 110.593
6858534284 D USD/JPY 05:15.4 110.58 110.591
6858534287 D USD/JPY 05:15.6 110.58 110.59
6858534316 D USD/JPY 05:30.1 110.58 110.591
6858534335 D USD/JPY 05:34.9 110.565 110.585
6858534342 D USD/JPY 05:35.1 110.565 110.58