行中丢失数据的方法? [复制]

Posted

技术标签:

【中文标题】行中丢失数据的方法? [复制]【英文标题】:Method for missing data in rows? [duplicate] 【发布时间】: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[:, :])

有谁知道我怎样才能有效地做到这一点?有没有处理这种情况的类的任何方法? (我不介意进入另一个图书馆)。

非常感谢

【问题讨论】:

在转换为yX 之前,就像dataset.fillna(dataset.mean()) 一样简单。 pandas 中的索引是一个非常强大的工具。 【参考方案1】:

如果你想用列的平均值填充NaN 值,你可以简单地使用:

data = 'A':[100,200,300,400,500,600],'B':[np.nan,5,4,5,5,4],'C':[5,np.nan,np.nan,4,2,3],'D':[1,3,5,7,np.nan,0]
df = pd.DataFrame(data)
df = df.fillna(df.mean())
print(df)

输出:

     A    B    C    D
0  100  4.6  5.0  1.0
1  200  5.0  3.5  3.0
2  300  4.0  3.5  5.0
3  400  5.0  4.0  7.0
4  500  5.0  2.0  3.2
5  600  4.0  3.0  0.0

【讨论】:

以上是关于行中丢失数据的方法? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

从ADODB记录集复制数据时,Excel表丢失数字格式

Rstudio 在命令行中复制命令

如何将中间项目居中在 flex 行中? [复制]

我有 3 行的 SQLite 数据库,当我从行中删除数据时,数据会丢失但行仍然会,我怎样才能删除那个空白行?

电脑msvcp140.dll丢失的解决方法?

盘符丢失恢复资料的办法