我正在尝试从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。
也许有人有想法,这里出了什么问题?
答案 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