pandas - 绘制包含 NaN 的 Pandas 数据框

标签 pandas ipython data-analysis

我有来自三个不同 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/

相关文章:

python - 如何将 pandas 中的一列字典转换为单独的列?

用于 Python 的 Pandas,分组

python - 运行 flask 时是否有任何选项获取 ipython 命令提示符

python - 在 Jupyter 笔记本中更改 HTML 表中文本的对齐方式

python - 如何将相同类别的列置于 Pandas 数据框中的单个标题下?

azure - 寻找合适的 Azure 工具

python - 根据第 2 列的条件,使用第 1 列的输入创建新的 df 列

string - 用字典替换子字符串的最快方法(在大型数据集上)

python - 在函数中使用IPython.display.audio在jupyter笔记本中播放音频无法正常工作

python - 如何使用 Pandas 对与给定条件匹配的列中的值求和?