为什么我们要用Mean值替换DataFrame中的nan值,并且当我们更改它时,它不会影响我们的数据?
0 1.048242
1 1.688173
2 NaN
3 0.194162
4 0.194162
5 0.493194
6 NaN
7 0.675041
8 NaN
9 0.101743
10 3.112086
df['view_duration'].fillna(mean,inplace = True)
0 1.048242
1 1.688173
2 0.938350
3 0.194162
4 0.194162
5 0.493194
6 0.938350
7 0.675041
8 0.938350
9 0.101743
10 3.112086
2条答案
按热度按时间8fq7wneg1#
用其他相关数据(如均值)替换空值称为插补,通常用于机器学习模型,因为它们不能接受空值。
它不会更改数据的平均值。
请注意,如果同一列中有太多的空值(通常超过30%,但应根据具体情况考虑),那么我们最好不要插补,而是删除空值行。
pxq42qpu2#
是的。
我们这样做的原因是,许多算法无法对包含NaN的序列进行运算-一个特别突出的例子是傅里叶变换及其导数。与NaN只是传播,但大部分数据可能保持"干净"的更"规则"的运算不同,如果数据中间有多达一个NaN,时间序列分析就死了。
当然,用平均值替换通常是最明智的默认设置,但也不总是如此。同样,这在时间序列分析中也很突出--如果你错过了高周期性数据中的整个观测周期,用平均值替换会比用"平均"周期趋势的合理近似值替换更严重地扭曲最终结果(通常这是无关紧要的,如果填写的时间太长,影响了分析,那么分析很可能是虚假的)。因此,这是特定于问题的,可能需要极其小心和领域知识来正确地进行。