Python тепловая карта из двух столбцов категориальных переменных - PullRequest
0 голосов
/ 05 августа 2020

Привет, мне нужно построить тепловую карту из фрейма данных только с двумя столбцами. Столбцы состоят примерно из 300 строк. каждая строка имеет присвоенную пользователем категорию (AE) и оценку от 1 до 5.

Я хочу показать процентную оценку пользователя каждой категории в виде тепловой карты.

например,

    1  2   3   4  5
A  70% 10% 10% 5% 5%
B  50% 20% 10% 8% 2%
C  30% 40% 10% 10% 10%
D  10% 30% 20% 30% 10%
E  20% 20% 40% 15% 5%

заранее спасибо!

1 Ответ

0 голосов
/ 28 августа 2020

Вот мое решение с использованием numpy, pandas и seaborn:

import numpy as np
import pandas as pd
import seaborn
import matplotlib.pyplot as plt

# Create summaryTable
categories = np.array(['A','B','C','D','E'])
summaryTable = pd.DataFrame(index=categories, columns=np.arange(1,6))

for i in range(summaryTable.shape[0]):
    for j in range(summaryTable.shape[1]):
        df_ij = df.loc[df.Category == summaryTable.index[i]].loc[df.Score == summaryTable.columns[j]]
        numOccurances = df_ij.shape[0]
        numOccurancesCat = df.loc[df.Category == summaryTable.index[i]].shape[0]
        
        summaryTable.at[categories[i], j+1] = numOccurances / numOccurancesCat * 100
        
# Create heatmap 
summaryTable_np = summaryTable.to_numpy().astype(float)
xLabels = np.arange(1,6)
yLabels = categories
seaborn.heatmap(summaryTable_np, annot=True, linewidths=.5, square=True, 
                xticklabels=xLabels, yticklabels=yLabels,
                vmin=np.amin(summaryTable_np), vmax=np.amax(summaryTable_np), cmap='Reds')
plt.yticks(rotation=0) 

, где df - ваш фрейм данных с ~ 300 строками и 2 столбцами, а summaryTable - оценка пользователя. таблица процентов.

Вот пример тепловой карты:
Тепловая карта

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