Ich habe ein Problem beim Erstellen von Histogrammen aus Objekten der Pandas-Serie und kann nicht verstehen, warum dies nicht funktioniert. Der Code hat vorher gut funktioniert, aber jetzt nicht mehr.
Hier ist ein Teil meines Codes (insbesondere ein Objekt der Pandas-Serie, von dem ich ein Histogramm erstellen möchte):
type(dfj2_MARKET1['VSPD2_perc'])
welches das Ergebnis ausgibt:
pandas.core.series.Series
Hier ist mein Plotcode:
fig, axes = plt.subplots(1, 7, figsize=(30,4))
axes[0].hist(dfj2_MARKET1['VSPD1_perc'],alpha=0.9, color='blue')
axes[0].grid(True)
axes[0].set_title(MARKET1 + ' 5-40 km / h')
Fehlermeldung:
AttributeError Traceback (most recent call last)
<ipython-input-75-3810c361db30> in <module>()
1 fig, axes = plt.subplots(1, 7, figsize=(30,4))
2
----> 3 axes[1].hist(dfj2_MARKET1['VSPD2_perc'],alpha=0.9, color='blue')
4 axes[1].grid(True)
5 axes[1].set_xlabel('Time spent [%]')
C:\Python27\lib\site-packages\matplotlib\axes.pyc in hist(self, x, bins, range, normed, weights, cumulative, bottom, histtype, align, orientation, rwidth, log, color, label, stacked, **kwargs)
8322 # this will automatically overwrite bins,
8323 # so that each histogram uses the same bins
-> 8324 m, bins = np.histogram(x[i], bins, weights=w[i], **hist_kwargs)
8325 m = m.astype(float) # causes problems later if it's an int
8326 if mlast is None:
C:\Python27\lib\site-packages\numpy\lib\function_base.pyc in histogram(a, bins, range, normed, weights, density)
158 if (mn > mx):
159 raise AttributeError(
--> 160 'max must be larger than min in range parameter.')
161
162 if not iterable(bins):
AttributeError: max must be larger than min in range parameter.
python
matplotlib
pandas
histogram
Jonas
quelle
quelle
hist
Funktion und keine Matplotlibs. Und dies behandelt zB NaNs wie erwartet. Siehe mein Update.Antworten:
Dieser Fehler tritt unter anderem auf, wenn Sie NaN-Werte in der Serie haben. Könnte das der Fall sein?
Diese
hist
NaNs werden von der Funktion von Matplotlib nicht gut gehandhabt. Zum Beispiel:s = pd.Series([1,2,3,2,2,3,5,2,3,2,np.nan]) fig, ax = plt.subplots() ax.hist(s, alpha=0.9, color='blue')
erzeugt den gleichen Fehler
AttributeError: max must be larger than min in range parameter.
Eine Option besteht z. B. darin, die NaNs vor dem Plotten zu entfernen. Das wird funktionieren:ax.hist(s.dropna(), alpha=0.9, color='blue')
Eine andere Möglichkeit besteht darin, die Pandas-
hist
Methode für Ihre Serie zu verwenden undaxes[0]
dasax
Schlüsselwort anzugeben:dfj2_MARKET1['VSPD1_perc'].hist(ax=axes[0], alpha=0.9, color='blue')
quelle
Der Fehler ist zu Recht auf die
NaN
oben erläuterten Werte zurückzuführen. Benutz einfach:df = df['column_name'].apply(pd.to_numeric)
Wenn der Wert nicht numerisch ist, gilt Folgendes:
df = df['column_name'].replace(np.nan, your_value)
quelle