【Python实用技巧】DataFrame时序不连续处理

一、需求描述

理指定时间范围内的时序数据时,通常将其展示为多条时序折线或者结合时序柱状图,而一旦数据中出现某些时刻或时段的缺失导致该部分记录未出现时,以默认的自增横坐标绘图会出现错位的情况,且难以发现该问题,从而导致得到错误的结论。
举例来说:
以df_obs和df_pred为例:

在这里插入图片描述

在这里插入图片描述

正常来说,可视化时,很容易观察到1月5日的观测数据缺失,但数据量较大时,缺失时段不易发现,如未处理,使用默认的索引,则会导致如下错误的图:

在这里插入图片描述

因此,处理指定时段范围内的时序数据时,需要对不连续时段的数据进行处理,使之连续。

二、处理方法

总体思路:新增一个只包含连续时段的DataFrame,将df_obs与df_pred分别与其合并,从而缺失的时刻就会以空值的形式出现,从而时段连续,数据能一一对应上,避免错位。

1、生成指定时段只包含时间的DataFrame并将其值类型转化为str,方便分别与df_obs和df_pred合并:

# 创建只包含日期的df
df_dr = pd.DataFrame(pd.date_range(start='2023-01-01', end='2023-01-06', freq='D'), columns=['Date'])

# 将值类型由datetime64改为str,处理方法很关键
df_dr['Date'] = df_dr['Date'].apply(lambda i: (pd.to_datetime(str(i))).strftime('%Y-%m-%d'))  

2、合并

df_obs = pd.merge(left=df_dr, right=df_obs, on=['Date'], how='outer')
df_pred = pd.merge(left=df_dr, right=df_pred, on=['Date'], how='outer')

有缺失值的df_obs为:

在这里插入图片描述
3、绘图,添加刻度

plt.xticks(range(len(df_obs['PM10'])), df_obs['Date'].values, rotation=30)

即可解决:

在这里插入图片描述

当数据时段长度较长时,以上方法可以很快解决时段错位问题,确保得出的结论可靠。


微信公众号:微思研

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

⁣北潇

老板大气!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值