Как мне создать тепловую карту из двух кулонов плюс значение этих двух в Python - PullRequest
2 голосов
/ 11 июля 2019

и спасибо за помощь!

Я хотел бы сгенерировать тепловую карту в python из данных df.(в моем проекте я использую pandas, seaborn, numpy и matplotlib)

Фрейм данных df выглядит следующим образом:

index | a | b | c | year | month
0     |   |   |   | 2013 |   1
1     |   |   |   | 2015 |   4
2     |   |   |   | 2016 |   10 
3     |   |   |   | 2017 |   1

в наборе данных каждая строка является билетом.набор данных большой (51 столбец и 100 тыс. строк),таким образом, a, b, c просто чтобы показать некоторые случайные столбцы.(за месяц => 1 = январь, 2 = февраль ...)

Для тепловой карты: ось х = год,ось у = месяц,значение: и в тепловой карте я хотел, чтобы значение между двумя осями было счетчиком количества строк, в которых был выдан билет за этот год и месяц.

Результат, который я представляю, должен выглядетьчто-то вроде документации из seaborn: https://seaborn.pydata.org/_images/seaborn-heatmap-4.png

Я новичок в кодировании и пробовал много случайных вещей, которые я нашел в интернете и не смог заставить его работать.

Спасибо за помощь!

1 Ответ

1 голос
/ 11 июля 2019

Это должно сделать (с сгенерированными данными):

import pandas as pd
import seaborn as sns
import random

y = [random.randint(2013,2017) for n in range(2000)]
m = [random.randint(1,12) for n in range(2000)]


df = pd.DataFrame([y,m]).T
df.columns=['y','m']
df['count'] = 1
df2 = df.groupby(['y','m'], as_index=False).count()
df_p = pd.pivot_table(df2,'count','m','y')


sns.heatmap(df_p)

Возможно, вам не понадобится столбец count, но я добавил его, потому что мне нужен был дополнительный столбец для groupby.

...