Python中的热插板插补

问题描述 投票:0回答:1

我一直在寻找Python代码,该代码将允许我替换数据框列中缺少的值。我的分析重点是生物统计学,因此我不满意使用均值/中位数/模式替换值。我想应用"Hot Deck Imputation"方法。

我找不到在线的任何Python函数或程序包,这些函数或程序包都使用数据框的列,并使用“ Hot Deck Imputation”方法填充缺少的值。

但是,我确实看到了此GitHub project,并且[[没有发现觉得有用。

以下是我的一些数据的示例(假设这是一个熊猫数据框):

| age | sex | bmi | anesthesia score | pain level | |-----|-----|------|------------------|------------| | 78 | 1 | 40.7 | 3 | 0 | | 55 | 1 | 25.3 | 3 | 0 | | 52 | 0 | 25.4 | 3 | 0 | | 77 | 1 | 44.9 | 3 | 3 | | 71 | 1 | 26.3 | 3 | 0 | | 39 | 0 | 28.2 | 2 | 0 | | 82 | 1 | 27 | 2 | 1 | | 70 | 1 | 37.9 | 3 | 0 | | 71 | 1 | NA | 3 | 1 | | 53 | 0 | 24.5 | 2 | NA | | 68 | 0 | 34.7 | 3 | 0 | | 57 | 0 | 30.7 | 2 | 0 | | 40 | 1 | 22.4 | 2 | 0 | | 73 | 1 | 34.2 | 2 | 0 | | 66 | 1 | NA | 3 | 1 | | 55 | 1 | 42.6 | NA | NA | | 53 | 0 | 37.5 | 3 | 3 | | 65 | 0 | 31.6 | 2 | 2 | | 36 | 0 | 29.6 | 1 | 0 | | 60 | 0 | 25.7 | 2 | NA | | 70 | 1 | 30 | NA | NA | | 66 | 1 | 28.3 | 2 | 0 | | 63 | 1 | 29.4 | 3 | 2 | | 70 | 1 | 36 | 3 | 2 |

我想应用一个Python函数,该函数允许我输入一列作为参数,并使用“热甲板插补”方法将缺失值替换为估算值的列返回。 

我将其用于使用Statsmodels.api进行线性和逻辑回归等模型进行统计建模的目的。我没有将此用于机器学习。

任何帮助将不胜感激!

python python-3.x pandas imputation
1个回答
0
投票
您可以使用使用ffill(LOCF)热代码插补的last observation carried forward

#... df.fillna(method='ffill', inplace=True)

Scikit学习插补提供KNN,Mean,Max和其他输入法。(https://scikit-learn.org/stable/modules/impute.html

# sklearn '0.22.x' from sklearn.impute import KNNImputer imputer = KNNImputer(n_neighbors=2, weights="uniform") # make sure that NaN are actually NaN df['imputed_x'] = impute.fit_tranform(df[['x']])

© www.soinside.com 2019 - 2024. All rights reserved.