Ich habe Gleitkommadaten in einem Pandas Datenrahmen. Jede Spalte repräsentiert eine Variable (sie haben String-Namen) und jede Zeile eine Menge von Werten (die Zeilen haben Integer-Namen, die nicht wichtig sind).Willst du Pandas Dataframe als Multiple Histogramme mit log10 skalieren X-Achse
>>> print data
0 kppawr23 kppaspyd
1 3.312387 13.266040
2 2.775202 0.100000
3 100.000000 100.000000
4 100.000000 39.437420
5 17.017150 33.019040
...
Ich möchte für jede Spalte ein Histogramm zeichnen. Das beste Ergebnis, das ich erreicht habe, ist mit der hist Methode des Datenrahmen:
data.hist(bins=20)
aber ich mag, dass die x-Achse jeden Histogramm auf log10 Maßstab sein. Und die Bins müssen ebenfalls log10 sein, aber das ist einfach genug mit bins = np.logspace (-2,2,20).
Eine Abhilfe könnte sein, um die Daten zu log10-Transformation vor dem Plotten, aber die Ansätze, die ich habe versucht,
data.apply(math.log10)
und
data.apply(lambda x: math.log10(x))
geben Sie mir einen Floating-Point-Fehler.
"cannot convert the series to {0}".format(str(converter)))
TypeError: ("cannot convert the series to <type 'float'>", u'occurred at index kppawr23')
Danke! Ich wusste nichts über Ravel(). Ich habe mich auch nicht mit dem Thema beschäftigt. Ich habe versucht, mich auf Pandas zu konzentrieren, weil es extrem schnell beim Lesen großer Datensätze ist. –
Übrigens, gibt es irgendeine Möglichkeit, es zu beschleunigen? Ich habe 219 Histogramme zu produzieren und es dauert Minuten (läuft im Debug-Modus in PyCharm Community Edition). –
Und kann ich Tight_layout irgendwie auf data.hist anwenden? –