当应用于具有2列的数据帧或列作为独立的NT数据帧时,会给出不同的结果

2024-03-28 17:44:50 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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的长度不同,因此无法应用回归

这是怎么回事


1条回答
网友
1楼 · 发布于 2024-03-28 17:44:50

您的代码中有一个错误:

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'])

相关问题 更多 >