Pandas / Python:2D直方图失败,值为错误

时间:2015-06-23 16:31:26

标签: python numpy pandas matplotlib histogram2d

我正在尝试从Pandas数据框创建一个2D histrogram" rate" 假定X轴和Y轴是从数据帧变换的,即X轴和Y轴是缩放的'从原始帧列和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 2D直方图
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放在了我的rame&rate; drop.dropna()&#39; - 但实际上我猜错了,这不是因为我的框架中的NaNs。

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

1 个答案:

答案 0 :(得分:1)

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

我没有检查过有问题的价值对 x:y = 0.0:inf 显然不是一个好的2D直方图矢量,也就是说,当转换原始值时,我必须抓住这样的情况。

另一件事:numpy直方图对我来说在DataFrame系列中有一些问题,所以我必须从系列中得到一个合适的numpy.arrary来正确绘制它们,例如,

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

将系列切片到某个变量MAX