如何在Python中删除NaN并在每列中获取相同数量的值?

时间:2018-04-15 19:35:40

标签: python pandas regression

我建立一个线性回归模型来检验这个dataset的变量之间的关系。它包含一些' XXXXXXX'因此,我首先用NaN替换它们:

df = df.replace(['XXXXXXX'], ['NaN'])

然后我检查了每列中的值的数量:

df.count(axis=0)

似乎值的数量因列而异:

season            200
river size        200
fluid velocity    200
chemical_1        199
chemical_2        198
chemical_3        190
chemical_4        198
chemical_5        198
chemical_6        198
chemical_7        198
chemical_8        188
algae_1           183
algae_2           183
algae_3           183
algae_4           183
algae_5           200
algae_6           200
algae_7           183

如果我使用像df = df.fillna(df.median(axis=0), axis=0)这样的中间值填充NaN,每列会得到200个值,并且我能够执行进一步的分析。

但是我想使用另一种方法并删除NaN,以便每列具有相同数量的值。 当我尝试df.dropna()时,每列中的值计数会保持不同。而且我无法进行回归分析。

为了放弃NaN并保持每列中的值的数量相等,应该采用什么方法?

1 个答案:

答案 0 :(得分:1)

而不是['NaN'],请使用numpy.nan

import numpy as np
df = df.replace(['XXXXXXX'], np.nan)

然后df.dropna()应该可以正常工作。