Python 熊猫数据框线图在缺少值时不工作,但散点图工作正常

Python 熊猫数据框线图在缺少值时不工作,但散点图工作正常,python,pandas,plot,Python,Pandas,Plot,在Python DataFrame中,当一列没有每个索引值的值时,线图将部分或全部丢失,但散点图将很好。有没有正确绘制直线图的方法?我在0.24.2版本的熊猫上 请注意,这个问题不是其他类似问题的重复,因为我不想填充或插值缺少的值,因为这不是我想要显示的。我只希望丢失的部分保持丢失状态,并且每两个最近的非丢失点之间有一条直线连接(这是直线图的正常行为) 提前谢谢 创建示例数据帧: import pandas as pd import numpy as np df1 = pd.DataFrame

在Python DataFrame中,当一列没有每个索引值的值时,线图将部分或全部丢失,但散点图将很好。有没有正确绘制直线图的方法?我在0.24.2版本的熊猫上

请注意,这个问题不是其他类似问题的重复,因为我不想填充或插值缺少的值,因为这不是我想要显示的。我只希望丢失的部分保持丢失状态,并且每两个最近的非丢失点之间有一条直线连接(这是直线图的正常行为)

提前谢谢

创建示例数据帧:

import pandas as pd
import numpy as np

df1 = pd.DataFrame(index = range(1,21,2), columns=['val1'])
df1.val1=np.random.rand(10)

df2 = pd.DataFrame(index = range(2,22,2), columns=['val2'])
df2.val2=np.random.rand(10)

df=df1.append(df2, sort='False').sort_index()
df

散点图与我预期的一样:

df.plot(style='.')

相反,直线图不起作用:

df.plot(style='-')

熊猫不会用
NaN
值绘制直线。据我所知,这是没有办法的。使用不同的打印类型或以可接受的方式填写
NaN


现在还不清楚你会期望一个直线图在这里是什么样子。您有0个
(x,y)
对要打印。

您需要动态删除NaN值。因此,您的数据帧将保持不变,只需不使用NaN值和索引即可进行打印。使用熊猫图时,默认情况下,它将使用索引作为x轴。即使删除NaN值,索引也将保持不变,因此绘图将如您所愿。由于NaN值下降,它不会挤压x轴

df.plot()
df.iloc[:,0].dropna().plot()
df.iloc[:,1].dropna().plot()

请注意,线和标记在样式方面存在差异,因为它们是不同维度(1D和2D)的概念

  • 如果有两个连续的非na点,将有一条直线
  • 然而,只要有一个非na点,就会有一个标记。 即,该点可以与其他点隔离

此行为不仅适用于pandas plot,也适用于大多数软件(例如Excel)。

虽然此代码可能会回答此问题,但提供有关此代码为什么和/或如何回答此问题的其他上下文可提高其长期价值。您是对的,我将编辑我的回答:)