【发布时间】:2021-01-12 03:21:44
【问题描述】:
目前,我正在 kaggle 上做 Titanic 数据集。 Age 列有一些缺失值,我尝试使用 sklearn.impute SimpleImputer 估算它们。
import numpy as np # linear algebra
import pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)
from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import mean_absolute_error as mae
from sklearn.model_selection import train_test_split as tts
from sklearn.impute import SimpleImputer
titanic_data = pd.read_csv("../input/titanic/train.csv")
imputer = SimpleImputer(missing_values=np.nan)
features = ['Age', 'Pclass']
X = titanic_data[features]
y = titanic_data.Survived
age_arr = X.Age.values.reshape(1, -1)
imputed_age = pd.DataFrame(imputer.fit_transform(age_arr))
X.Age = imputed_age
print(imputed_age)
如上所示,我在排列和转换这些数组和数据列时遇到了一些麻烦。我需要一种适当的方法来使它们成为年龄列中的单列。当我打印imputed_age 时,它给了我一个数据框,其中每个年龄都是一列。我想将所有这些都放在同一列中,我怎样才能轻松地进行插补并成功地将插补值再次放入数据框中?
如何将这些估算值放入数据框中?
【问题讨论】:
-
你用
reshape把数据变成1行n列,你可以再次reshape让它变成1列n行 -
无论问题中的问题如何,将 imputed_age 添加到数据框中,此实现都不会填补缺失的年龄。注意,dataframe 中有 891 个值,但 imputed_age 只有 714 个值,这只是非空值的数量。有关填充 NaN 值的适当解决方案,请参阅副本。