2017-06-03 4 views
0

Ich habe einen Datenrahmen, der einen Spaltenwert von 'A', 'B', 'C', 'D' enthält ... Dies ist nur eine Gruppierung einiger Arten. Ich wollte ein Histogramm mit den Spaltenwerten gegen seine Zählung erstellen.Seaborn Distplot und Barplot

import seaborn as sns 
sns.distplot(dfGroupingWithoutNan['patient_group']) 

Dies erzeugte einen Fehler:

TypeError: unsupported operand type(s) for /: 'str' and 'int' 

ich vielleicht gedacht, weil im nicht vertraut mit distplot, ich verwende es den richtigen Weg nicht. Ich habe nachgedacht, ich kann einfach eine Serie hineinreichen und es wird in der Lage sein, die Zählungen für jeden Wert zu bestimmen und sie entsprechend im Histogramm anzuzeigen.

Wie auch immer, ich dachte an andere Lösung und das ist, was ich mit kam.

Dieses Mal war ich in der Lage, ein Diagramm der einzelnen Werte gegen seine Zählung zu erstellen, obwohl ein Balkendiagramm verwendet wurde.

Ich wollte nur fragen, gab es einen anderen Weg dies zu tun, wie es funktioniert hätte, wenn ich das distplot verwende? Muss ich wirklich einen neuen Datenrahmen erstellen, nur um ein Repository zu haben, das die Werte und die Anzahl enthält? Ich dachte mir, wird es nicht möglich sein, dass der distplot automatisch die Anzahl der Zählungen ermittelt, ohne dass er sich die Mühe macht, einen neuen Datenrahmen zu erstellen?

Antwort

0

Ich würde eine Counter verwenden, um dies zu tun. Die Logik ist sehr ähnlich zu dem, was Sie tun, aber Sie brauchen keine zusätzlichen Datenrahmen zu erstellen:

from collections import Counter 
cnt = Counter(dfGroupingWithoutNan.patient_group) 
sns.barplot(x=cnt.keys(), y=cnt.values()) 

Ich bin mir nicht bewusst jede Lösung, die automatisch String-Werte in seaborn oder matplotlib Histogrammen behandeln.

+1

es wäre einfacher zu tun 'df ['patient_group']. Value_counts()' –

+0

@PaulH kümmern sich um Ihren Kommentar zu erarbeiten? –