Pandas怎么处理日期索引的缺失?(二十一)

问题:按日期统计的数据,缺失了某天,导致数据不全该怎么补充日期?
可以用两种方法实现:

  • 1、DataFrame.reindex,调整dataframe的索引以适应新的索引
  • 2、DataFrame.resample,可以对时间序列重采样,支持补充缺失值
问题:如果缺失了索引该怎么填充?
1、导入需要的包和相应的数据
import pandas as pd
%matplotlib inline

df = pd.DataFrame({
    "pdate": ["2019-12-01", "2019-12-02", "2019-12-04", "2019-12-05"],
    "pv": [100, 200, 400, 500],
    "uv": [10, 20, 40, 50],
})

df.set_index("pdate").plot() #将pdate作为行索引,并且绘画出来的图是以pdate这一列作为x轴来进行绘图操作的。

方法1:使用pandas.reindex方法(解决缺失日期数据索引的方法一)
  • 1、将df的索引变成日期索引
df_date = df.set_index("pdate")
df_date.index
# 将df的索引设置为日期索引
df_date = df_date.set_index(pd.to_datetime(df_date.index))
df_date
  • 2、使用pandas.reindex填充缺失的索引
# 生成完整的日期序列
pdates = pd.date_range(start="2019-12-01", end="2019-12-05")
pdates

df_date_new = df_date.reindex(pdates, fill_value=0)
df_date_new

方法2:使用pandas.resample方法
  • 1、先将索引变成日期索引
df_new2 = df.set_index(pd.to_datetime(df["pdate"])).drop("pdate", axis=1)
df_new2.index
# 由于采样会让区间变成一个值,所以需要指定mean等采样值的设定方法,隔零天来将其作为行索引
df_new2 = df_new2.resample("D").mean().fillna(0)
df_new2
# resample的使用方式,这里是将隔两天来显示相应的数据
df_new2.resample("2D").mean()

第一种方式重采样的结果
第二种方式重采样的结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值