首页 > 解决方案 > 具有年度时间序列的整个 Python/Pandas 数据帧的插补

问题描述

数据框 50 个国家/地区,80 个功能(规模差异很大),超过 25 年。

特征值之间的差异以及同一特征中每个国家/地区的值之间的差异很大。

尝试一次准确地估算整个数据帧中的缺失值。

尝试SimpleImputer使用Mean,但这将为整个特征列提供一个平均值,并忽略该特定国家/地区的任何年度时间趋势。

TLDR;

目前:

       Year     x1     x2        x3   ... 
  
USA    1990     4      581000    472
USA    1991     5      723000    389
etc...

CHN    1990     5      482000    393
CHN    1991     7      623000    512
etc...

CDR    1990     1      NaN       97
CDR    1991     NaN    91000    NaN
etc...

如何最准确、最有效地估算缺失值,其中估算考虑到国家和特征的规模,同时注意每年的时间趋势?

目标:

       Year     x1     x2        x3   ... 
  
USA    1990     3      581000    472
USA    1991     5      723000    389
etc...

CHN    1990     5      482000    393
CHN    1991     7      623000    512
etc...

CDR    1990     1     (87000)    97
CDR    1991    (3)     91000    (95)
etc...

其中38700095将是合适的值,因为它们遵循其他国家/地区的一般时间趋势,但这些值会缩放到特定国家/地区的同一特征中的其他值(在本例中为 CDR)

  • 我知道插补永远不会完美,但在这种情况下肯定可以更准确

  • 如果该国家/地区多年来有明显的趋势,我如何在将估算值保持在与特定国家/地区的特征相匹配的范围内反映这一点?

标签: pythonpandasdataframetime

解决方案


您可以尝试以下技术。

  1. 随机森林插补。

    你可以参考这篇论文

  2. 向后向前填充(尽管它只会考虑年份)。

  3. 日志返回


推荐阅读