У меня есть набор данных, который в основном представляет собой список списков
data = [[(datetime.datetime(2018, 12, 6, 10, 0), Decimal('7.0000000000000000')), (datetime.datetime(2018, 12, 6, 11, 0), Decimal('2.0000000000000000')), (datetime.datetime(2018, 12, 6, 12, 0), Decimal('43.6666666666666667')), (datetime.datetime(2018, 12, 6, 14, 0), Decimal('8.0000000000000000')), (datetime.datetime(2018, 12, 7, 9, 0), Decimal('12.0000000000000000')), (datetime.datetime(2018, 12, 7, 10, 0), Decimal('2.0000000000000000')), (datetime.datetime(2018, 12, 7, 11, 0), Decimal('2.0000000000000000')), (datetime.datetime(2018, 12, 7, 17, 0), Decimal('2.0000000000000000'))], [(datetime.datetime(2018, 12, 6, 10, 0), 28.5), (datetime.datetime(2018, 12, 6, 11, 0), 12.75), (datetime.datetime(2018, 12, 6, 12, 0), 12.15), (datetime.datetime(2018, 12, 6, 14, 0), 12.75), (datetime.datetime(2018, 12, 7, 9, 0), 12.75), (datetime.datetime(2018, 12, 7, 10, 0), 12.75), (datetime.datetime(2018, 12, 7, 11, 0), 12.75), (datetime.datetime(2018, 12, 7, 17, 0), 12.75)]]
В основном он содержит два списка, каждый из которых содержит столбцы date
и metric
.Мне нужно извлечь значения столбцов метрик для каждого списка и найти взаимосвязь между ними.
Примечание: даты похожи в каждом списке
Итак, сначала я загружаю каждый изсписок в панды и установить индекс даты.
data1 = data[0]
data2 = data[1]
df1 = pd.DataFrame(data1)
df1[0] = pd.to_datetime(df1[0], errors='coerce')
df1.set_index(0, inplace=True)
df2 = pd.DataFrame(data2)
df2[0] = pd.to_datetime(df2[0], errors='coerce')
df2.set_index(0, inplace=True)
Теперь я объединяю два фрейма данных (оба они имеют одинаковые даты).
df = pd.merge(df1,df2, how='inner', left_index=True, right_index=True)
Теперь мой фрейм данных выглядит примерно такthis
1_x 1_y
0
2018-12-06 10:00:00 7.0000000000000000 28.50
2018-12-06 11:00:00 2.0000000000000000 12.75
2018-12-06 12:00:00 43.6666666666666667 12.15
2018-12-06 14:00:00 8.0000000000000000 12.75
2018-12-07 09:00:00 12.0000000000000000 12.75
2018-12-07 10:00:00 2.0000000000000000 12.75
2018-12-07 11:00:00 2.0000000000000000 12.75
2018-12-07 17:00:00 2.0000000000000000 12.75
Теперь мне нужно найти коэффициент Пирсона и Спирмена между двумя метрическими столбцами (1_x и 1_y)
Я могу найти коэффициент Пирсона, выполнив
pearson_coeff = df.iloc[:,0].astype('float64').corr(df.iloc[:,1].astype('float64'))
Но для нахождения коэффициента Спирмена я делаю это
spearman_coeff = df.iloc[:,0].astype('float64').corr(method="spearman", min_periods=1).df.iloc[-1]
Но я получаю ошибку ниже
Traceback (most recent call last):
File "/home/souvik/Music/UI_Server2/test61.py", line 85, in <module>
print(df.iloc[:,0].astype('float64').corr(method="spearman", min_periods=1).df.iloc[-1])
TypeError: corr() missing 1 required positional argument: 'other'
Я последовал за этим сообщением от stackoverflow TypeError: corr ()пропустил 1 обязательный позиционный аргумент: 'other' и сделал точно так, как сказал, но я все еще получаю эту ошибку.
Что я делаю не так?