pandas-dropna在应用于具有2列的数据帧或将列作为独立的nt数据帧时给出不同的结果



我使用以下公共数据集来练习线性回归:

https://www.kaggle.com/theforcecoder/wind-power-forecasting

我试图使用numpy多项式进行最小二乘回归,但我遇到了问题,因为列具有nan值

将dropna应用于我从中提取列的数据帧没有效果。我尝试使用in_place=True和定义一个新的数据帧,但都不起作用:

LSFitdDf = BearingTempsCorr[['WindSpeed', 'BearingShaftTemperature']]
LSFitdDf = LSFitdDf[['WindSpeed', 'BearingShaftTemperature']]
WindSpeed = BearingTempsCorr['WindSpeed']
BearingShaftTemperature = BearingTempsCorr['BearingShaftTemperature']
print(len(WindSpeed))
print(len(BearingShaftTemperature))

LSFitdDf = BearingTempsCorr[['WindSpeed', 'BearingShaftTemperature']].dropna()
LSFitdDf = LSFitdDf[['WindSpeed', 'BearingShaftTemperature']]
WindSpeed = BearingTempsCorr['WindSpeed']
BearingShaftTemperature = BearingTempsCorr['BearingShaftTemperature']
print(len(WindSpeed))
print(len(BearingShaftTemperature))

两者都产生相同的输出(两列的长度=323(

然而,将dropna应用于列本身确实会删除行:

WindSpeed = BearingTempsCorr['WindSpeed'].dropna()
BearingShaftTemperature = BearingTempsCorr['BearingShaftTemperature'].dropna()

导致长度=(316312(

然而,这引入了一个新问题:由于x和y具有不同的长度,因此不能应用回归

这是怎么回事?

您的代码中有一个错误:

WindSpeed = BearingTempsCorr['WindSpeed'] 
BearingShaftTemperature = BearingTempsCorr['BearingShaftTemperature']

您使用BearingTempsCorr,但应该使用LSFitdDf(保存dropna值的位置(。

WindSpeed = LSFitdDf['WindSpeed'] 
BearingShaftTemperature = LSFitdDf['BearingShaftTemperature']

附言:您还有一个冗余行,它只是将LSFitdDf复制到同一个变量中。

LSFitdDf = LSFitdDf[['WindSpeed', 'BearingShaftTemperature']]

p.p.S.获取整个数据集但在所需列中删除NA值的行的最清晰方法是

BearingTempsCorr.dropna(subset=['WindSpeed', 'BearingShaftTemperature'])

最新更新