У меня есть датафрейм с несколькими столбцами, записи которых являются строками. Мне нужно найти наиболее коррелированные пары (отсортированные) между двумя столбцами по моему выбору. Пока мой код:
col1 = 'cats'
col2 = 'dogs'
oe = OrdinalEncoder()
df = final_clean[[str(col1), str(col2)]]
categ_df = pd.DataFrame(oe.fit_transform(df), columns=[col1, col2])
corr_mat = categ_df.corr().abs()
s = corr_mat.unstack()
sorted_vals = s.sort_values(kind="quicksort", ascending=False)
sorted_vals[:10]
возвращает
cats cats 1.000000
dogs dogs 1.000000
cats dogs 0.030865
dogs cats 0.030865
dtype: float64
Таким образом, он строит матрицу корреляции между самими столбцами, а не парами элементов. Как я могу изменить этот код, чтобы он давал мне пары элементов, отсортированных по корреляции?