gpt4 book ai didi

python - 在没有 fillna 或 Interpolate 的情况下从数据框中删除 NaN 值

转载 作者:太空狗 更新时间:2023-10-29 21:18:10 24 4
gpt4 key购买 nike

我有一个数据集:

           367235   419895  992194
1999-01-11 8 5 1
1999-03-23 NaN 4 NaN
1999-04-30 NaN NaN 1
1999-06-02 NaN 9 NaN
1999-08-08 2 NaN NaN
1999-08-12 NaN 3 NaN
1999-08-17 NaN NaN 10
1999-10-22 NaN 3 NaN
1999-12-04 NaN NaN 4
2000-03-04 2 NaN NaN
2000-09-29 9 NaN NaN
2000-09-30 9 NaN NaN

当我绘制它时,使用 plt.plot(df, '-o') 我得到这个:

output from plotting dataframe

但我想要的是将每一列的数据点连接成一条线,如下所示:

desired output from plotting dataframe

我知道 matplotlib 不会连接由 NaN 值分隔的数据点。我查看了所有选项 here用于处理丢失的数据,但所有这些基本上都会歪曲数据框中的数据。这是因为数据框中的每个值都代表一个事件;如果我尝试用标量值替换 NaN 或使用插值选项,我会得到一堆实际上不在我的数据集中的点。这是插值的样子:

df_wanted2 = df.apply(pd.Series.interpolate)

enter image description here

如果我尝试使用 dropna,我将丢失数据框中的整行\列,而这些行包含有值(value)的数据。

有谁知道连接我的点的方法吗?我怀疑我需要从 datasframe 中提取单个数组并绘制它们,正如给出的建议 here ,但这似乎需要做很多工作(而且我的实际数据框要大得多。)有人有解决方案吗?

最佳答案

使用带有参数'index'interpolate方法

df.interpolate('index').plot(marker='o')

enter image description here

替代答案

plotiteritems

之后
for _, c in df.iteritems():
c.dropna().plot(marker='o')

enter image description here


额外学分
仅从每列的第一个有效索引到最后一个有效索引进行插值

for _, c in df.iteritems():
fi, li = c.first_valid_index(), c.last_valid_index()
c.loc[fi:li].interpolate('index').plot(marker='o')

enter image description here

关于python - 在没有 fillna 或 Interpolate 的情况下从数据框中删除 NaN 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41252442/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com