如何在python中跳过缺失的NaN值,同时替换它们?

时间:2019-07-12 19:07:41

标签: pandas numpy matplotlib scikit-learn linear-regression

我希望能够在维护NaN值的列表上运行numpy命令。基本上,我想对两个列表变量进行线性回归。一个变量包含NaN,因此我无法对其进行线性回归。但是,如果删除NaN值,则列表的大小与不包含NaN的列表的大小不匹配。例如,

x = [1,2,3,4,5,NaN] 如果删除NaN值,则x的大小将变为5 y = [1,2,3,4,5,6] y的大小为6

(x,y)=(1,1),(2,2),(3,3),(4,4),(5,5),(NaN,6)

我希望我的线性回归跳过数据点(NaN,6)

我该怎么做?

2 个答案:

答案 0 :(得分:1)

您需要根据条件过滤两个数组,而不仅仅是其中之一。

import numpy as np
x = np.array([1,2,np.NaN,4,5,np.NaN])
y = np.array([1,2,3,4,5,6])

condition = ~np.isnan(x)
xp = x[condition]
yp = y[condition]

print(xp)
print(yp)

所以两个数组都打印为[1 2 4 5]

答案 1 :(得分:-1)

这是处理NaN值和字符串的正确答案。

def skipNaN(x, y):
    x = np.array(x)
    y = np.array(y)

    condition1 = np.array([isNumber(i) and isNumber(j) for i,j in zip(x,y)])

    x = x[condition1].astype('float64')
    y = y[condition1].astype('float64')

    condition2 = ~np.isnan(x)
    x = x[condition2].astype('float64')
    y = y[condition2].astype('float64')

    return[x,y]