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)