Ежемесячные корреляции суточных данных между двумя пандами DataFrames - PullRequest
0 голосов
/ 25 мая 2018

У меня есть две панды DataFrames ежедневных данных:

import pandas as pd
dates = pd.date_range('2016-01-01', '2018-01-01')
ndays = len(dates)
df1 = pd.DataFrame(np.random.rand(ndays, 3), columns=['a','b','c'], index=dates)
df2 = pd.DataFrame(np.random.rand(ndays, 3), columns=['a','b','c'], index=dates)

Я хотел бы взять корреляцию значений в каждом кадре данных в непересекающихся ежемесячных сегментах.Возвращаемым значением должен быть DataFrame, индексированный по месяцам со столбцами ['a', 'b', 'c'], где каждое значение является корреляцией дневных значений в df1 и df2 для этого календарного месяца.

Я могу выполнить этот цикл по столбцам и месяцам, но это не похоже на то, как это сделает панда.Есть ли способ разделить два кадра данных на основе календарного месяца, применить корреляцию между ними и объединить в один кадр данных?

1 Ответ

0 голосов
/ 25 мая 2018

Вот несколько запутанная строка:

pd.DataFrame.from_dict({col:pd.concat([df1[[col]],df2[[col]]],axis=1).groupby(pd.Grouper(freq='M')).apply(lambda x: x.corr().values[0,1]) for col in df1.columns})

По сути, я создаю новый кадр данных для каждого столбца, вычисляю матрицу корреляции каждый месяц, а затем беру недиагональную (взаимная корреляция)элемент.Вероятно, есть более красивый способ сделать это, но, похоже, это работает быстро.

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