删除熊猫数据框中的零而不影响插补结果

问题描述 投票:0回答:1

我有一个timeseries dataset5M rows

该列具有19.5% missing values80% zeroes(不要使用百分比值-尽管这意味着仅0.5%的数据有用,但是0.5M的5M足够了)。现在,我需要估算此专栏。

鉴于行数,KNN将整个事情归咎于大约需要2.5个小时

为了使其更快,我想到了删除所有零值行,然后执行插补过程。但是我觉得在此之后使用KNN [[naively]会导致高估(由于所有零值都消失了,并且邻居数保持固定,因此期望均值会增加)。

所以,有没有办法:

  • 要修改输入到KNN模型的数据
  • 删除带有零的行后进行插补过程,以使插补后获得的值相同或至少接近

为了更清楚地理解问题,请考虑以下虚拟数据帧:

DATE VALUE 0 2018-01-01 0.0 1 2018-01-02 8.0 2 2018-01-03 0.0 3 2018-01-04 0.0 4 2018-01-05 0.0 5 2018-01-06 10.0 6 2018-01-07 NaN 7 2018-01-08 9.0 8 2018-01-09 0.0 9 2018-01-10 0.0

[现在,如果我使用KNN (k=3),则为零,该值将是0109的加权平均值。但是,如果我删除零

naively

,该值将使用8109的加权平均值进行估算。 我想到但无法实现的一些粗略想法如下:

    修改KNN插补过程的权重(用于加权平均计算),以便在插补期间考虑删除的0。
  1. [添加一列以说明特定列具有多少个相邻零,然后以某种方式使用它来修改插补过程。
  • 要点1.2.只是在思考如何解决问题时想到的粗略想法,可能在回答答案时会有所帮助。

    PS-

    1. 显然,我没有将时间序列数据直接输入到KNN中。我正在做的是从日期列中提取monthday等,然后将其用于插补。
    2. I

      不需要并行处理作为答案

  • 使代码运行更快。数据非常大,以至于我的笔记本电脑无法正常使用RAM。
    python pandas missing-data knn imputation
    1个回答
    © www.soinside.com 2019 - 2024. All rights reserved.