【发布时间】:2020-02-09 04:23:14
【问题描述】:
我从编程开始。我想通过将缺失数据替换为其列的平均值而不是其行平均值来处理缺失数据。
我正在尝试从 Excel 数据表中预处理一些数据,类似于如下所示(第一列,没有标题,只是编号/索引;不是真正的列) :
A B C D E F
0 100 NaN 5.0 1.0 5 a
1 200 5.0 NaN 3.0 3 a
2 300 4.0 NaN 5.0 6 a
3 400 5.0 4.0 7.0 9 b
4 500 5.0 2.0 NaN 2 b
5 600 4.0 3.0 0.0 4 b
关键是我想用 NaN 替换它的列的平均值。我正在使用熊猫从数据表中提取值。然后我尝试使用 sklearn.impute.SimpleImputer 来处理这些缺失的数据,但它只是给了我行的平均值。
dataset = pd.read_excel(io=file_name, sheet_name=sheet)
y = dataset.iloc[:, 0].values
X = dataset.iloc[:, 1:-1].values
from sklearn.impute import SimpleImputer
imputer = SimpleImputer(missing_values = np.nan, strategy = 'mean')
imputer = imputer.fit(X[:, :])
X[:, :] = imputer.transform(X[:, :])
有谁知道我怎样才能有效地做到这一点?有没有处理这种情况的类的任何方法? (我不介意进入另一个图书馆)。
非常感谢
【问题讨论】:
-
在转换为
y和X之前,就像dataset.fillna(dataset.mean())一样简单。pandas中的索引是一个非常强大的工具。
标签: python pandas missing-data sklearn-pandas imputation