Python中的热甲板插补
我一直在尝试寻找Python代码,它允许我替换数据帧列中缺少的值。我分析的重点是生物统计学,所以我不习惯用平均值/中间值/模式替换值。我想应用这个方法 我在网上找不到任何Python函数或包,这些函数或包采用数据帧的列,并使用“Hot Deck插补”方法填充缺少的值 然而,我确实看到了这一点,并没有发现它有用 以下是我的一些数据的示例(假设这是一个数据帧): 我想应用一个Python函数,该函数允许我输入一列作为参数,并使用“Hot Deck插补”方法返回缺失值替换为插补值的列 我使用它来对模型进行统计建模,例如使用Python中的热甲板插补,python,python-3.x,pandas,imputation,Python,Python 3.x,Pandas,Imputation,我一直在尝试寻找Python代码,它允许我替换数据帧列中缺少的值。我分析的重点是生物统计学,所以我不习惯用平均值/中间值/模式替换值。我想应用这个方法 我在网上找不到任何Python函数或包,这些函数或包采用数据帧的列,并使用“Hot Deck插补”方法填充缺少的值 然而,我确实看到了这一点,并没有发现它有用 以下是我的一些数据的示例(假设这是一个数据帧): 我想应用一个Python函数,该函数允许我输入一列作为参数,并使用“Hot Deck插补”方法返回缺失值替换为插补值的列 我使用它来对模型
Statsmodels.api
的线性和逻辑回归。我不是用这个来学习机器
任何帮助都将不胜感激 您可以使用
ffill
,它使用上一次观察结转
(LOCF)热代码插补
#。。。
df.fillna(method='ffill',inplace=True)
Scikit learn插补提供KNN、Mean、Max和其他插补方法。()
#sklearn'>=0.22.x'
从sklearn.impute导入KNI计算机
插补器=KNIMPUTER(n_近邻=2,权重=“统一”)
DF['imputed_x']=插补器.拟合_变换(DF['bmi']]
打印(DF['imputed_x'])
你愿意还是愿意?哪一种应该是“热代码插补”(LOCF)的类型?这两种方法有什么不同?我如何知道它们使用热代码插补?ffill
使用上一次观察结转
LOCF热代码插补。是否有更精确的方法来填充缺失值,排除平均值/模式/中间值?是,给我一秒钟。我将添加示例我尝试了您共享的代码:impute=knimputer(n_neights=2,weights=“uniform”)
DF['imputed_x']=DF['bmi'].apply(lambda y:impute.fit_transform(y),axis=0)
打印(DF['imputed_x'])
我得到的错误如下:TypeError:()得到一个意外的关键字参数“axis”,让我测试一下。已修复。查看df['x']]
。获取数据帧而不是序列非常感谢您的帮助!你能解释一下如何确定“n_邻居”的最佳价值吗?
| 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 |