Pandas/Python: 二维直方图因值错误而失败

Pandas/Python: 2D histogram fails with value error

我正在尝试从 Pandas 数据框创建二维直方图 "rates" X 和 Y 轴应该是从数据帧转换而来的,即 X 和 Y 轴是来自原始帧列的 'scaled',bin 高度根据每个 x/y 中的命中数bin.

import numpy, pylab, pandas
import matplotlib.pyplot as plt

list(rates.columns.values)
['sizes', 'transfers', 'positioning']

x=(rates["sizes"]/1024./1024.)
y=((rates["sizes"]/rates["transfers"])/1024.)+rates["positioning]

所以,我尝试使用

将它们输入到一个 numpy 二维直方图中
histo, xedges, yedges = numpy.histogram2d(x, y, bins=(100,100))

然而,这失败了

File "<stdin>", line 1, in <module>
File "/usr/lib64/python2.7/site-packages/numpy/lib/twodim_base.py", line 650, in histogram2d
 hist, edges = histogramdd([x, y], bins, range, normed, weights)
File "/usr/lib64/python2.7/site-packages/numpy/lib/function_base.py" line 363, in histogramdd
 decimal = int(-log10(mindiff)) + 6
ValueError: cannot convert float NaN to integer

我已经在我的框架中删除了所有 NaN 'rates.dropna()' - 但实际上从我猜测的错误来看,这不是由于我的框架中的 NaN。

也许有人有想法,这里出了什么问题?

在@jme 的帮助下,我走上了正确的轨道

我没有检查有问题的值对 x:y = 0.0:inf 显然不是一个好的二维直方图向量,即在转换原始值时我必须捕捉到这种情况。

另一件事:numpy 直方图对我的 DataFrame 系列有一些问题,所以我必须从该系列中获得适当的 numpy.arrary 才能正确绘制它们,例如,

histo, xedges, yedges = np.histogram2d(np.array(x[1:MAX]),np.array(y[1:MAX]), bins=(100,100))

用于将系列切片到某个变量 MAX