当DataFrame-Column缺少值时,PyPlot会抛出错误

时间:2016-10-31 11:30:23

标签: matplotlib julia

我有以下问题:

我想从具有缺失值的Dataframe中绘制变量,其表示为" NA"。但是,如果我继续使用Pyplot

x = df[df[:country] .== "Belgium",:year]
y = df[df[:country] .== "Belgium",:hpNormLog]
plot(x, y, "b-", linewidth=2)

我收到以下错误消息:

PyError (:PyObject_Call) <class 'TypeError'> TypeError("float() argument must be a string or a number, not 'PyCall.jlwrap'",)
File "C:\Anaconda3\lib\site-packages\matplotlib\pyplot.py", line 3154, in plot
ret = ax.plot(*args, **kwargs)   File "C:\Anaconda3\lib\site-packages\matplotlib\__init__.py", line 1811, in inner
return func(ax, *args, **kwargs)   File "C:\Anaconda3\lib\site-packages\matplotlib\axes\_axes.py", line 1425, in plot
self.add_line(line)   File "C:\Anaconda3\lib\site-packages\matplotlib\axes\_base.py", line 1708, in add_line
self._update_line_limits(line)   File "C:\Anaconda3\lib\site-packages\matplotlib\axes\_base.py", line 1730, in _update_line_limits
path = line.get_path()   File "C:\Anaconda3\lib\site-packages\matplotlib\lines.py", line 925, in get_path
self.recache()   File "C:\Anaconda3\lib\site-packages\matplotlib\lines.py", line 621, in recache
y = np.asarray(yconv, np.float_)   File "C:\Anaconda3\lib\site-packages\numpy\core\numeri...

如果我有解决办法,我将非常感激。

最佳, ILJA

2 个答案:

答案 0 :(得分:2)

我找到了以下解决方案。我对朱莉娅的工作方式还不够深刻,所以我只能说什么有效,有什么无效。可以使用上面编写的代码绘制具有NaN的数组,但是DataFrame的列不允许相同的事物。在将列与缺失值一起绘制之前,需要将该列转换为数组。以下代码解决了这个问题:

x = df[df[:country] .== "Belgium",:year]
ytest = df[df[:country] .== "Belgium",:hpNormLog]
y = convert(Array,ytest,NaN)
plot(x, y, "b-", linewidth=2)

x不包含缺失值,因此我可以继续使用DataFrame,但y确实包含缺失值,因此需要将其转换为数组。 convert的第三个参数指定应该转换哪些缺失值,在本例中为NaN。

答案 1 :(得分:0)

为什么不进行错误处理?

try:
   plot(x, y, "b-", linewidth=2)
except PyError:
   pass

当大部分时间输入您的输入时,请跳过错误,但跳过&#34; NA&#34; -values ....

的绘图