python - 具有年度时间序列的整个 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...
其中3
、87000
和95
将是合适的值,因为它们遵循其他国家/地区的一般时间趋势,但这些值会缩放到特定国家/地区的同一特征中的其他值(在本例中为 CDR)
- 使用
SimpleImputer
,这些值会高得多,而且更不合逻辑。
我知道插补永远不会完美,但在这种情况下肯定可以更准确
如果该国家/地区多年来有明显的趋势,我如何在将估算值保持在与特定国家/地区的特征相匹配的范围内反映这一点?
解决方案
您可以尝试以下技术。
随机森林插补。
向后向前填充(尽管它只会考虑年份)。
日志返回
推荐阅读
- .net - 如何在 Windows 应用程序打包项目的 MSIX 文件中包含生成的应用程序清单
- javascript - 如何通过嵌套在对象数组属性中的对象属性的值来查找对象数组中的多个索引?
- javascript - javascript中的函数仅适用于其中一行
- http - 在 AngleSharp.Io 中使用代理和标头
- javascript - 期望一个字符串(对于内置组件)或一个类/函数(对于复合组件),但得到:
- swift - 如果存在类型不匹配错误,是否可以将变量解码为 nil
- c - C 中的字符串操作导致随机字符串内容
- html - 如何在 Wordpress 主题中删除网格图像下方无法解释的空间/间隙
- python - 为什么 schema_translate_map 不更改架构?
- office-js - 在 Microsoft Office 加载项中将标题设置为 displayDialogAsync() 对话框