Python直方图ValueError:range参数必须是有限的

Lea*_*arn 2 matplotlib python-3.x pandas

当使用直方图绘制熊猫数据框时,

样本数据框数据

     distance
0    5.680195
2    0.000000
3    7.974658
4    2.461387
5    9.703089
Run Code Online (Sandbox Code Playgroud)

我用来绘制的代码

import matplotlib.pyplot as plt

plt.hist(df['distance'].values)
plt.show()
Run Code Online (Sandbox Code Playgroud)

我有这个错误

"ValueError: range parameter must be finite."  
Run Code Online (Sandbox Code Playgroud)

我的尝试

df['Round_Distance'] = df['distance'].round(1)

0    5.7
2    0.0
3    8.0
4    2.5
5    9.7
Run Code Online (Sandbox Code Playgroud)

再次绘图,新错误

plt.hist(df['Round_Distance'].values)
plt.show()

ValueError: max must be larger than min in range parameter.
Run Code Online (Sandbox Code Playgroud)

奇怪的是,我使用的解决方法如下,我不必回滚

df['distance'].hist(bins=[0,25,50,75,100,125,150,175], color='g')
Run Code Online (Sandbox Code Playgroud)

sac*_*cuL 5

听起来好像您有一些NaNsinf实际数据。您只能像这样选择有限的值:

import numpy as np

df[np.isfinite(df['distance'])]
Run Code Online (Sandbox Code Playgroud)

因此,您的情节可以通过以下方式获得:

plt.hist(df[np.isfinite(df['distance'])].values)
Run Code Online (Sandbox Code Playgroud)


Jua*_*n C 5

只是为了添加到 sacul 的答案,您可以使用以下命令检查您是否有NaNsinf在任何列上:

为了NaNs

df.isnull().sum()
Run Code Online (Sandbox Code Playgroud)

为了inf

df.max()
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你 !


Lea*_*arn 1

NaN 导致问题,我不需要舍入它,只需删除 NaN,然后​​它就可以工作

plt.hist(df['distance'].dropna().values)
plt.show()
Run Code Online (Sandbox Code Playgroud)