создать тепловую карту двух категориальных переменных - PullRequest
0 голосов
/ 23 марта 2019

У меня есть следующие наборы данных из трех переменных:

  1. df ['Score]] Float dummy (1 или 0)
  2. df [' Province '] anстолбец объекта, где каждая строка представляет собой регион
  3. df ['Тип продукта'] объект, указывающий отрасль.

Я хотел бы создать совместный участок, в котором по оси x у меня разные отрасли, по оси y - разные провинции, а в качестве цветов моего объединенного участка я имею относительную частотуГол.Что-то вроде этого.https://seaborn.pydata.org/examples/hexbin_marginals.html

В настоящее время я могу сделать только следующее

mean = df.groupby(['Province', 'Product type'])['score'].mean()

Но я не уверен, как это построить.

Спасибо!

1 Ответ

1 голос
/ 23 марта 2019

Если вы ищете тепловую карту, вы можете использовать функцию seaborn heatmap.Однако сначала вам нужно повернуть таблицу.

Просто создайте небольшой пример:

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

score = [1, 1, 1, 0, 1, 0, 0, 0]
provinces = ['Place1' ,'Place2' ,'Place2', 'Place3','Place1', 'Place2','Place3','Place1']
products = ['Product1' ,'Product3' ,'Product2', 'Product2','Product1', 'Product2','Product1','Product1']
df = pd.DataFrame({'Province': provinces,
                   'Product type': products,
                   'score': score
                  })

Мой df выглядит так:

   'Province''Product type''score'
0   Place1    Product1      1
1   Place2    Product3      1
2   Place2    Product2      1
3   Place3    Product2      0
4   Place1    Product1      1
5   Place2    Product2      0
6   Place3    Product1      0
7   Place1    Product1      0

Затем:

df_heatmap = df.pivot_table(values='score',index='Province',columns='Product type',aggfunc=np.mean)
sns.heatmap(df_heatmap,annot=True)
plt.show()

Результат:

image

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