Python 试图预测缺失值

Python 试图预测缺失值,python,python-3.x,pandas,Python,Python 3.x,Pandas,我试图估算缺失值,不是用零或均值,而是用ML预测结果。我正在标准的“泰坦尼克号”数据集上测试我的想法,该数据集有大约80%的年龄记录被填写,但大约20%的年龄记录缺失。如何用简单线性回归模型的预测结果填充缺失值?下面是我正在测试的代码 import pandas as pd from sklearn.linear_model import LinearRegression linreg = LinearRegression() data = pd.read_csv('C:\\Users\\ry

我试图估算缺失值,不是用零或均值,而是用ML预测结果。我正在标准的“泰坦尼克号”数据集上测试我的想法,该数据集有大约80%的年龄记录被填写,但大约20%的年龄记录缺失。如何用简单线性回归模型的预测结果填充缺失值?下面是我正在测试的代码

import pandas as pd
from sklearn.linear_model import LinearRegression
linreg = LinearRegression()

data = pd.read_csv('C:\\Users\\ryans\\seaborn-data\\titanic.csv')
print(data)
list(data)
data.dtypes


data_with_null = data[['survived','pclass','sibsp','parch','fare','age']]

data_without_null = data_with_null.dropna()
train_data_x = data_without_null.iloc[:,:5]
train_data_y = data_without_null.iloc[:,5]

linreg.fit(train_data_x,train_data_y)

test_data = data_with_null.iloc[:,:5]
age = pd.DataFrame(linreg.predict(test_data))

# check for nulls
data_with_null.apply(lambda x: sum(x.isnull()),axis=0)
到目前为止,一切都正常,但当我尝试“填充”时,会出现错误

data_with_null.age.fillna(age,inplace=True)
正上方的代码行显示此错误:

TypeError:“value”参数必须是标量、dict或序列,但您传递了“DataFrame”

类似地,上面的代码行显示了此错误:


TypeError:
apply()缺少1个必需的位置参数:'func'

data\u with_null['age'].fillna(data\u with_null[data\u with_null['age'].isnull()].apply(axis=1),inplace=True)
这里的
.apply()
函数缺少一个参数,它需要一个类似于
data\u with_with_.apply的函数(lambda x:sum(x.isnull()),axis=0)
对于第一个错误,请尝试:
age=list(linreg.predict(test\u data))
而不是
age=pd.DataFrame(linreg.predict(test\u data))
data\u with\u null.age.fillna(age,inplace=True)
在这里,您正在传递一个数据帧,只需使用DFOh的一列,是的,现在我看到了!!谢谢大家!!
data\u with_null['age'].fillna(data\u with_null['age'].isnull()。apply(axis=1),inplace=True)
function如果缺少一个参数,则需要一个类似于
data\u中的函数,该函数的值为null.apply(lambda x:sum(x.isnull()),axis=0)
对于第一个错误,请尝试:
age=list(linreg.predict(test\u data))
而不是
age=pd.DataFrame(linreg.predict(test\u data))
data\u的值为null.age.fillna(age,inplace=True)
这里您正在传递一个数据帧,只需使用DFOh的一列,是的,现在我看到了!!谢谢大家!!
data_with_null['age'].fillna(data_with_null[data_with_null['age'].isnull()].apply(axis=1),inplace=True)