Тепловая карта с 2 числовыми переменными и 1 категориальной переменной

#python #pandas #seaborn

#python #pandas #seaborn

Вопрос:

Я столкнулся с проблемой, которая, я думаю, в основном связана с кодированием, и я был бы признателен за некоторую помощь, пожалуйста. Мне нужно было бы выполнить визуализацию данных в python framework (Jupyter Notebook) с 3 переменными: 2 из них числовые ( num_var1 и num_var2 ) и одна категориальная ( cat_var ). Я хотел бы использовать num_var1 как категориальную, связав ее.

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

  • num_var1 в столбцах, путем объединения его
  • cat_var в строках
  • num_var2 в качестве цвета

Я подумал, что для привязки числовой переменной я мог бы использовать pd.cut() функцию, и поэтому я написал следующий код:

 cat_means = df.groupby([pd.cut(df.num_var1, 10), 'cat_var']).mean()['num_var2'] 
cat_means = cat_means.reset_index(name = 'num_var2_avg') 
cat_means = cat_means.pivot(index = 'cat_var', columns = pd.cut(df.num_var1, 10), values = 'num_var2_avg') 
seaborn.heatmap(cat_means, annot = True, fmt = '.3f', cbar_kws = {'label' : 'mean(num_var2)'});
  

Вместо ожидаемой тепловой карты выводится следующая ошибка:

 KeyError: "[Interval(-0.01, 1.001, closed='right')n Interval(-0.01, 1.001, closed='right')n Interval(-0.01, 1.001, closed='right') ...n Interval(-0.01, 1.001, closed='right')n Interval(-0.01, 1.001, closed='right')n Interval(-0.01, 1.001, closed='right')] not in index"
  

Кто-нибудь может мне помочь в этом, пожалуйста?

Большое спасибо,

Federico

Комментарии:

1.В .pivot columns должно быть имя столбца dataframe.

2. Спасибо ImportanceOfBeingErnest за вашу помощь. Я вроде как устранил проблему, создав дополнительный столбец с дискретными данными на основе ‘num_var1’, а затем использовал этот столбец для сводки. Я не могу поверить, что нет способа сделать это, используя исходный столбец..

3. Что ж, тогда не стесняйтесь в это не верить.

4. ImportanceOfBeingErnest пожалуйста, не поймите меня неправильно, я очень ценю вашу помощь 🙂 Я был просто немного удивлен, что это нельзя было сделать иначе, если не путем создания другого столбца.. Мне еще многому предстоит научиться 🙂