【问题标题】:Whats the best way to fill the missing data in the time series using Python?使用 Python 填充时间序列中缺失数据的最佳方法是什么?
【发布时间】:2020-05-16 08:31:56
【问题描述】:

我第一次尝试使用python进行连续数据帧的案例研究,这是2006-2016年期间属性的时间序列数据

但我在 A、B、C、D 列中缺少 2015-16 年的值,在 E 和 F 列中缺少 2006-07 年的值。 我正在尝试估算值并填充数据。

我尝试过 MICE 和插值,但不确定它是否正确。应用哪种方法以及如何在python中应用它? 我已经浏览了链接:

https://www.theanalysisfactor.com/seven-ways-to-make-up-data-common-methods-to-imputing-missing-data/ https://www.researchgate.net/post/What_is_a_reliable_method_of_dealing_with_missing_data_in_time_series_records

我应该使用预测方法而不是插补来填充数据吗?

请帮忙。

【问题讨论】:

    标签: python pandas dataframe time-series missing-data


    【解决方案1】:

    在你的情况下,如果你用估计值填充你的空单元格,你的分析结果会很不准确。因为您的样本量非常有限。

    如果您有更多数据(例如更多年),您可以尝试不同的方法来填充数据集中的空值(插值、平均值等)。每种方法都有优点和缺点。这取决于您需要对这个时间序列做什么。

    如果您只有这些数据,那么只使用您拥有每列数据的时间段是有意义的,但同样,只有这么少的行会导致您得到不那么有趣的结果。

    无论如何,pandas dataframes 提供了很多库和实用程序来处理这个问题。

    例如dataframe方法fillna:

    df = # your dataframe
    df.fillna(method='ffill')
    

    这会将最后一个有效观察向前传播到下一个有效

    或者插值方法:

    df.interpolate(method ='linear', limit_direction ='forward') 
    

    但是您的问题没有完美的答案。您需要对数据进行推理并根据上下文做出决定

    【讨论】:

    • 感谢您的回答,我应该使用预测方法而不是插补来填充数据吗?
    • @PrakashShelke 你可以。预测数据有不同的方法,但我认为你没有足够的数据。还有问题:你将如何为 E 和 F 列填充过去的数据?
    • 我正在考虑使用 bfill,但我不确定它是否是在多行中具有相同值的正确方法
    • 我也读到了 MICE,但由于该行完全空白,结果是一样的。即过去和未来行中的相同值
    【解决方案2】:

    事实上,填充缺失值的最佳方法并不总是一种。 以下是python中用于填充时间序列值的一些方法。missing-values-in-time-series-in-python

    填充缺失值(也称为插补)是计算机科学和统计学中经过充分研究的主题。

    以前,我们过去常常用平均值来估算数据,而不管数据类型如何。均值插补(所有 const 插补)触发的一个大问题是时间序列的突变。

    稍后,用于建模时间序列的自回归 (AR) 和移动平均 (MA) 用于插补。这些方法有很强的理论基础STAT510,用于预测/推算时间序列。

    矩阵分解是另一种重要的方法,如TRMF、SVD、PCA。最近关于 MF 插补的基准发布在 PVLDB.Mind the Gap: An Experimental Evaluation of Imputation of Missing Values Techniques in Time Series

    此外,最近还提出了其他机器/深度学习方法。有一个关于时间序列中使用的插补方法的调查Time Series Data Imputation: A Survey on Deep Learning Approaches,可能对你有很大帮助。但是,本次调查中提到的方法不够准确。

    回到您的问题,MICE 只是一个框架,您可以在其中使用任何回归算法。它假设不同的列(A、B、C 和 E、F)是相关的。

    预测和插补本质上是一样的。你可以认为预测是插补的一种特殊情况,没有后续数据。

    你最好尝试更多的插补方法来找到最好的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-30
      • 1970-01-01
      • 2015-12-18
      • 2019-05-16
      • 2015-11-21
      • 1970-01-01
      相关资源
      最近更新 更多