1

我正在尝试从 Pandas 数据帧“速率”创建 2D 直方图 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

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

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

4

1 回答 1

1

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

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

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

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

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

于 2015-06-24T08:14:59.857 回答