我有以下问题:
我想从具有缺失值的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
答案 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 ....
的绘图