найти корреляцию между pandas временными рядами - PullRequest
2 голосов
/ 11 марта 2020

У меня есть два pandas фрейма данных, которые я взял только из одного столбца и установил столбец дат в качестве индекса, так что теперь у меня есть два Series . Мне нужно найти корреляцию для этих серий .

Вот несколько строк из dfd:

index      change
2018-12-31  -0.86
2018-12-30  0.34
2018-12-27  -0.94
2018-12-26  -1.26
2018-12-25  3.30
2018-12-24  -4.17

и из dfp:

index      change
2018-12-31  0.55
2018-12-30  0.81
2018-12-27  -2.99
2018-12-26  0.50
2018-12-25  3.59
2018-12-24  -3.43

Я попытался:

correlation=dfp.corr(dfd)

и получил следующую ошибку:

TypeError: unsupported operand type(s) for /: 'str' and 'int'

Ответы [ 2 ]

5 голосов
/ 11 марта 2020

Проблема в том, что dfp заполняется строкой repr чисел, поэтому используйте Series.astype для преобразования в числа с плавающей запятой:

correlation=dfp.astype(float).corr(dfd.astype(float)
print (correlation)
0.8624789983270312

Если какое-то число не указано c для решения значений выше ошибки, затем используйте to_numeric с errors='coerce' - ненулевые числа преобразуются в пропущенные значения:

correlation=pd.to_numeric(dfp, errors='coerce').corr(dfd)
0 голосов
/ 11 марта 2020

Может объединить два фрейма данных и сопоставить столбцы

dfd['date']=pd.to_datetime(dfd['date'])
dfd.set_index(dfd['date'], inplace=True)
dfd.drop(columns=['date'], inplace=True)

dfp['date']=pd.to_datetime(dfp['date'])
dfp.set_index(dfp['date'], inplace=True)
dfp.drop(columns=['date'], inplace=True)
df = pd.merge(dfp,dfd,left_index=True, right_index=True).reset_index()
df

enter image description here

Коррелировать с изменением двух столбцов (dfd), (dfp)

df['change(dfp)'].corr(df['change(dfd)'])

Результат

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...