日期型索引缺失序列补全及剩余变量NA值填充技术需求
补全月度时间序列索引并填充缺失值
我来帮你搞定这个时间序列补全的问题,用Pandas就能轻松解决,步骤非常清晰:
1. 先构造你的数据集并设置日期索引
首先我们把你提供的数据转换成Pandas DataFrame,同时把RECEIPT_MONTH_YEAR设为日期型索引:
import pandas as pd # 基于你提供的数据构造DataFrame data = { 'RECEIPT_MONTH': [1,2,3,4,5,6,7,8,9,10,11,8,9,10,11,12] } # 将日期字符串转为datetime类型作为索引 date_index = pd.to_datetime([ '2014-01-01', '2014-02-01', '2014-03-01', '2014-04-01', '2014-05-01', '2014-06-01', '2014-07-01', '2014-08-01', '2014-09-01', '2014-10-01', '2014-11-01', '2015-08-01', '2015-09-01', '2015-10-01', '2015-11-01', '2015-12-01' ]) df = pd.DataFrame(data, index=date_index)
2. 生成完整的连续月度日期序列
接下来我们生成从最早日期到最晚日期的完整月度序列,用freq='MS'指定每月第一天(和你的索引格式完全匹配):
# 创建完整的月度日期范围 full_monthly_dates = pd.date_range(start=df.index.min(), end=df.index.max(), freq='MS')
3. 重新索引补全缺失日期
用生成的完整日期序列重新索引DataFrame,此时缺失的RECEIPT_MONTH会自动填充为NaN:
# 重新索引,补全所有缺失的月度记录 df_complete = df.reindex(full_monthly_dates)
4. 填充缺失的RECEIPT_MONTH值
因为RECEIPT_MONTH就是对应日期的月份数,我们可以直接从索引中提取月份来填充缺失值,完全不需要手动输入:
# 从日期索引中提取月份,填充NaN值 df_complete['RECEIPT_MONTH'] = df_complete['RECEIPT_MONTH'].fillna(df_complete.index.month)
这样处理后,你就得到了从2014-01-01到2015-12-01的完整连续月度数据集,所有缺失的记录都被补全,RECEIPT_MONTH的值也完全正确。
内容的提问来源于stack exchange,提问作者Naveen Raj B
相关产品推荐
相关产品推荐

