[FIXED] Erstellen Sie eine Heatmap, indem Sie zwei Spalten gruppieren

Ausgabe

Ich möchte ein Heatmap-Array mit plt.imshow() erstellen. Aber ich habe einige Zweifel, wie ich meinen Datenrahmen transformieren und das 7×24-Array füllen soll. Mein Ziel ist es, alle Besuche zu zählen, die denselben Tag und dieselbe Uhrzeit haben:

visits = [
   (1,13),
   (2,1),
   (1,13),
   (1,13),
   (2,18),
   (5,3),
   (6,1),
   (5,3),
   (1,2),
   (2,16),
   (2,16),
   (2,18),
   (4,7)
]

expected_df = [
    (1,13,3),
    (2,1,1),
    (2,18,2),
    (5,3,2),
    (1,2,1),
    (2,16,2),
    (4,7,1),
    (6,1,1)
]

visits = pd.DataFrame(visits , columns = ['day','hour'])
expected_df = pd.DataFrame(expected_df , columns = ['day','hour', 'count'])

Ich bin neu bei Pandas, daher weiß ich nicht wirklich, wie ich den Visits-Datenrahmen in den erwarteten_df-Datenrahmen umwandeln und ein Array 7×24 mit dem erwarteten_df-Datenrahmen erstellen soll, um eine Heatmap mit plt.imshow() zu erstellen. Ich hoffe meine Frage ist klar genug.

Lösung

Für den ersten Teil möchten Sie nach mehreren Spalten gruppieren (und lassen Sie den Index zurücksetzen und ihm einen Namen geben):

expected_df = visits.groupby(['day', 'hour']).size().reset_index(name='count')

Für den zweiten Teil, das Plotten, gehe ich aus dem Kontext davon aus, dass keine Daten keine Besuche bedeuten, also 0 auf der Heatmap

heat = np.zeros((7,24))
heat[expected_df['day'], expected_df['hour']] = expected_df['count']
plt.imshow(heat)
plt.show()


Beantwortet von –
Mikael Öhman


Antwort geprüft von –
David Goodson (FixError Volunteer)

0 Shares:
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like