熊猫:如何在大型数据集中填充缺失值?

时间:2020-05-25 06:51:04

标签: python pandas performance data-science

我在Pandas中确实有一个大型数据集(大约800万行x 25列),我正在努力以一种高效的方式进行一项操作。

这是我的数据集的样子:

                   temp   size
location_id hours             
135         78     12.0  100.0
            79      NaN    NaN
            80      NaN    NaN
            81     15.0  112.0
            82      NaN    NaN
            83      NaN    NaN
            84     14.0   22.0
  • 我在[location_id,hours]上具有多重索引。我大约有6万个地点,每个地点有140个小时(组成800万行)。
  • 其余数据为数字(浮点型)。我这里只包括2列,通常大约有20列。
  • 我愿意做的是通过使用周围的值来填充那些NaN值。基本上,小时79的值将从7881的值中得出。对于此示例,temp的{​​{1}}值为79(基本外推)。
  • 我一直都知道只有13.0小时会被填满,其余的将有78, 81, 84 (multiples of 3)个小时。情况总是如此。在NaN之间的几个小时内都是这样。
  • 考虑到这些,我在Pandas中实现了以下算法:
78-120
  • 这在功能上确实很好用,但是性能太差了。我的数据集至少要花费10分钟的时间,目前尚无法接受。
  • 是否有更好/更快的方法来实现这一目标?我实际上只处理全部数据的一部分(只有78-120之间的几小时),所以我真的希望它能更快地工作。

1 个答案:

答案 0 :(得分:1)

我相信您正在寻找interpolate

print (df.interpolate())

                        temp   size
location_id hours
135         78     12.000000  100.0
            79     13.000000  104.0
            80     14.000000  108.0
            81     15.000000  112.0
            82     14.666667   82.0
            83     14.333333   52.0
            84     14.000000   22.0