code

히스토그램을 사용하는 Matplotlib / Pandas 오류

codestyles 2020. 11. 11. 20:11
반응형

히스토그램을 사용하는 Matplotlib / Pandas 오류


팬더 시리즈 객체에서 히스토그램을 만드는 데 문제가 있는데 왜 작동하지 않는지 이해할 수 없습니다. 코드는 이전에는 잘 작동했지만 지금은 그렇지 않습니다.

다음은 내 코드의 일부입니다 (특히 히스토그램을 만들려는 팬더 시리즈 객체).

type(dfj2_MARKET1['VSPD2_perc'])

결과를 출력합니다. pandas.core.series.Series

내 플로팅 코드는 다음과 같습니다.

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

에러 메시지:

    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.

이 오류는 시리즈에 NaN 값이있을 때 특히 발생합니다. 그럴 수 있습니까?

이러한 NaN hist은 matplotlib 기능에 의해 잘 처리되지 않습니다 . 예를 들면 :

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

동일한 오류를 생성합니다. AttributeError: max must be larger than min in range parameter.한 가지 옵션은 플로팅하기 전에 NaN을 제거하는 것입니다. 이것은 작동합니다 :

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

또 다른 옵션은 hist시리즈에서 pandas 메소드 를 사용 axes[0]하고 ax키워드에 제공하는 것입니다 .

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

The error is rightly due to NaN values as explained above. Just use:

df = df['column_name'].apply(pd.to_numeric)

if the value is not numeric and then apply:

df = df['column_name'].replace(np.nan, your_value)

참고URL : https://stackoverflow.com/questions/20656663/matplotlib-pandas-error-using-histogram

반응형