我有来自三个不同 GPS 接收器的冰速 GPS 数据。数据位于带有 julian day 索引的 pandas 数据框中(从 2009 年初开始递增)。
这是数据的一个子集(主要数据集是 3487235 行...):
R2 R7 R8
1235.000000 116.321959 100.805197 96.519977
1235.000116 NaN 100.771133 96.234957
1235.000231 NaN 100.584559 97.249262
1235.000347 118.823610 100.169055 96.777833
1235.000463 NaN 99.753551 96.598350
1235.000579 NaN 99.338048 95.283989
1235.000694 113.995003 98.922544 95.154067
数据框具有以下形式:
索引:6071320 个条目,127.67291667 到 1338.51805556
数据列:
R2 3487235 非空值
R7 3875864 非空值
R8 1092430 非空值
数据类型:float64(3)
R2 以与 R7 和 R8 不同的速率采样,因此 NaN 在该间距系统地出现。
正在尝试
df.plot()
绘制整个数据框(或其索引行位置)在绘制 R7 和 R8 方面工作正常,但不绘制 R2。同样,只要做 df.R2.plot()
也不起作用。绘制 R2 的唯一方法是执行 df.R2.dropna().plot()
,但这也删除了表示无数据周期的 NaN(而不仅仅是比其他接收器更粗的采样频率)。有没有其他人遇到过这个?对这个问题的任何想法将不胜感激:)
最佳答案
您没有看到任何东西的原因是因为默认的绘图样式只是一条线。但是该线在 NaN 处中断,因此只会绘制多个连续值。而后者在你的情况下不会发生。您需要更改绘图风格,这取决于您想看到的内容。
对于初学者,请尝试添加:
.plot(marker='o')
这应该使所有数据点显示为圆圈。它很容易变得困惑,因此调整标记大小、边缘颜色等可能会很有用。我没有完全适应 Pandas 使用 matplotlib 的方式,所以如果情节变得更复杂,我经常自己切换到 matplotlib,例如:
plt.plot(df.R2.index.to_pydatetime(), df.R2, 'o-')
关于pandas - 绘制包含 NaN 的 Pandas 数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13603181/