ich versuche, ein Balkendiagramm in Pandas zu machen, mit zwei Datenreihen von einem groupby kommen:Pandas Balkendiagramm mit kontinuierlicher x-Achse
data.groupby(['popup','UID']).size().groupby(level=0).value_counts().unstack().transpose().plot(kind='bar', layout=(2,2))
Die x-Achse ist nicht kontinuierlich, und zeigt nur Werte, die in der sind Datensatz. In diesem Beispiel springt es von 11 nach 13.
Wie kann ich es kontinuierlich machen?
** EDIT 2: **
Ich versuchte JohnE datacentric Ansatz, und es funktioniert. Es erstellt einen neuen Index ohne fehlende Werte:
temp = data.groupby(['popup','UID']).size().groupby(level=0).value_counts().unstack().transpose()
temp.reindex(np.arange(temp.index.min(), temp.index.max())).plot(kind='bar', layout=(2,2))
Aber ich nehme an, es sollte mit Histogramm statt Balkendiagramm ein besserer Ansatz sein. Das Beste, was ich mit Histogrammen tun konnte, ist:
data.groupby(['popup','UID']).size().groupby(level=0).plot(kind='hist', bins=30, alpha=0.5, layout=(2,2), legend=True)
Aber ich habe keine Möglichkeit, in hist Grundstück findet das gleiche Rendering als Balkendiagramm, ohne bar überlappend zu erhalten.
** EDIT: ** Hier sind einige Informationen, um Kommentare zu beantworten.
Daten Beispiel:
INSEE C1 popup C3 date \
0 75101.0 0.0 0 NaN 2017-05-17T13:20:16Z
0 75101.0 0.0 0 NaN 2017-05-17T14:23:51Z
1 31557.0 0.0 1 NaN 2017-05-17T14:58:27Z
UID
0 ba4bd353-f14d-4bc5-95ba-6a1f5134cc84
0 ba4bd353-f14d-4bc5-95ba-6a1f5134cc84
1 bafe9715-3a07-4d9b-b85c-0bbf658a9115
Erste groupby Ergebnis (Probe):
data.groupby(['popup','UID']).size().head(3)
popup UID
0 016d3e7e-1901-4f84-be0e-117988ec57a8 6
01c15455-29cc-4d1e-8743-638fd0f51602 6
03fc9eb0-c5fb-4205-91f0-4b74f78a8b96 3
dtype: int64
Zweite groupby Ergebnis (Probe):
data.groupby(['popup','UID']).size().groupby(level=0).value_counts().head(3)
popup
0 1 46
3 23
4 22
dtype: int64
Nach Entstapelungsunterdrückung und transponieren:
data.groupby(['popup','UID']).size().groupby(level=0).value_counts().unstack().transpose().head(3)
popup 0 1
1 46.0 38.0
2 21.0 35.0
3 23.0 22.0
Können Sie Beispieldaten posten? Wie sieht groupby output aus? –
Ich weiß nicht über Plot-Optionen, aber Sie könnten einen datenzentrischen Ansatz nehmen und einfach mit allen gewünschten Werten auf der x-Achse neu indizieren. Vielleicht mit einer Fillna auch? z.B. 'df.reindex (Bereich (30)). fillna (0)' – JohnE