Как получить коррелированные значения набора данных в отдельном столбце, если индекс и столбцы совпадают - PullRequest
1 голос
/ 15 мая 2019

Я импортировал набор данных в свой скрипт на Python и взял корреляцию. Это код для корреляции:

data = pd.read_excel('RQ_ID_Grouping.xlsx' , 'Sheet1')
corr = data.corr()

После корреляции данные выглядят так:

enter image description here

Я хочу преобразовать данные в следующий формат:

enter image description here

Я использую этот код для получения вышеуказанных данных, но, похоже, он не работает:

corr1 = (corr.melt(var_name = 'X' , value_name = 'Y').groupby('X')['Y'].reset_index(name = 'Corr_Value'))

Я знаю, что должно быть что-то после части 'groupby', но я не знаю что. Если бы вы могли мне помочь, я был бы очень признателен.

1 Ответ

1 голос
/ 15 мая 2019

Используйте DataFrame.stack для изменения формы и удаления пропущенных значений, конвертируйте MultiIndex в столбцы по DataFrame.reset_index и последним установленным именам столбцов:

df = corr.stack().reset_index()
df.columns = ['X','Y','Corr_Value']

Другое решение с DataFrame.rename_axis:

df = corr.stack().rename_axis(('X','Y')).reset_index(name='Corr_Value')

И ваше решение с melt также возможно:

df = (corr.rename_axis('X')
         .reset_index()
         .melt('X', var_name='Y', value_name='Corr_Value')
         .dropna()
         .sort_values(['X','Y'])
         .reset_index(drop=True))
...