【发布时间】:2020-04-19 20:16:19
【问题描述】:
我一直在尝试寻找可以让我替换数据框列中缺失值的 Python 代码。我的分析重点是生物统计学,因此我不习惯使用均值/中值/模式替换值。我想应用"Hot Deck Imputation" 方法。
我在网上找不到任何 Python 函数或包,它们采用数据框的列并使用“Hot Deck Imputation”方法填充缺失值。
不过,我确实看到了这个GitHub project,但没有觉得它有用。
以下是我的一些数据示例(假设这是一个 pandas 数据框):
| 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 函数,该函数允许我输入一列作为参数,并使用“Hot Deck Imputation”方法返回缺失值替换为估算值的列。
我将其用于使用Statsmodels.api 使用线性和逻辑回归等模型进行统计建模。我没有将它用于机器学习。
任何帮助将不胜感激!
【问题讨论】:
-
这两种方法有何不同,我如何知道它们使用了热代码插补?
-
ffill使用last observation carried forwardLOCF 热代码插补。 -
是否有更精确的方法来填充缺失值,不包括均值/众数/中位数?
标签: python python-3.x pandas imputation