如何用行均值替换nan值?SimpleImputer替代Imputer的实现方法
用行均值填充NaN值的解决方案
方法一:使用Pandas(最简便)
直接借助Pandas的fillna方法结合行均值计算,就能快速实现按行填充NaN:
import pandas as pd import numpy as np x = [[2,4,np.nan,5,3],[2,3,5,np.nan]] df = pd.DataFrame(x) # 按行遍历,用当前行的均值填充该行的NaN df_filled = df.apply(lambda row: row.fillna(row.mean()), axis=1) print(df_filled)
也可以通过转置数据的方式实现,适合处理大规模数据:
df_filled = df.T.fillna(df.mean(axis=1)).T
方法二:结合NumPy与Sklearn SimpleImputer
如果需要基于Sklearn生态实现,可以通过转置数据绕开SimpleImputer不支持axis=1的限制:
import numpy as np from sklearn.impute import SimpleImputer x = np.array([[2,4,np.nan,5,3],[2,3,5,np.nan]]) # 转置数据,将原数据的行转为列 x_transposed = x.T # 初始化SimpleImputer,用均值填充缺失值 imputer = SimpleImputer(strategy='mean') # 填充后转置回原数据形状 x_filled = imputer.fit_transform(x_transposed).T print(x_filled)
内容的提问来源于stack exchange,提问作者adel shabez
相关产品推荐
相关产品推荐

