2013-12-18 20 views
46

Histogramları panda serisi nesnelerinden yapma konusunda bir sorunum var ve neden işe yaramadığını anlayamıyorum. Kod daha önce iyi çalıştı ama şimdi değil. sonucunu çıktıMatplotlib/Pandas histogramı kullanarak hata

type(dfj2_MARKET1['VSPD2_perc']) 

: pandas.core.series.Series

İşte benim komplo var Burada

benim kod biraz (özellikle bir pandalar serisi nesne ben histogramını yapmaya çalışıyorum) 'dir kod:

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') 

Hata mesajı:

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. 
+0

Hmm, benim için çalışıyor:

ax.hist(s.dropna(), alpha=0.9, color='blue') 

Başka bir seçenek pandanın dizi hist yöntemi kullanmak ve ax anahtar kelimeye axes[0] sağlayan etmektir. Veri ağınızı gösterebilir misiniz? –

+0

Hmm, bunu yaptığımda garip bir histogram üretebilirim: s = dfj2_MARKET1 ['VSPD1_perc'] s.hist() – jonas

+0

Evet, ama sonra pandas 'hist' işlevini kullanıyorsunuz, matplotlibs değil. Ve bu, örneğin NaN'leri beklendiği gibi idare eder. Güncellemeye bakın. – joris

cevap

78

Bu hata, Serilerdeki NaN değerlerine sahip olduğunuzda başka şeylerin yanı sıra oluşur. Bu durum böyle olabilir mi?

Bu NaN'ler, matplotlib işlevinin hist işlevi tarafından iyi işlenmez. Örneğin:

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') 

örneğin komplo önce NaN en kaldırmak için aynı hata AttributeError: max must be larger than min in range parameter. Bir seçenek oluşturur. Bu çalışacaktır:

dfj2_MARKET1['VSPD1_perc'].hist(ax=axes[0], alpha=0.9, color='blue') 
+0

Mükemmel çalışıyor! Çok teşekkürler – jonas

+0

Mükemmel NaN hata oluşturur ve panda/pyplot istisnası yeterli bilgi paylaşmaz. Gerçekten faydalı. – Doogle

+0

Mükemmel çalışıyor! –

İlgili konular