Python缺失值填充理解。
设有DataFrame A和DataFrame B,
rng = np.random.RandomState(42)
A = pd.DataFrame(rng.randint(0, 20, (2, 2)),
columns=list('AB'))
print(A)
数据框A返回为:
| A | B | |
|---|---|---|
| 0 | 6 | 19 |
| 1 | 14 | 10 |
B = pd.DataFrame(rng.randint(0, 10, (3, 3)),
columns=list('BAC'))
print(B)
数据框B返回为:
| B | A | C | |
|---|---|---|---|
| 0 | 7 | 4 | 6 |
| 1 | 9 | 2 | 6 |
| 2 | 7 | 4 | 3 |
现在要算两个数据框相加,即:A + B,但是两个数据框的维度不一样dim(A) = (2, 2), dim(B) = (3,3),直接相加会出现缺失值。
A + B
返回结果为:
| A | B | c | |
|---|---|---|---|
| 0 | 10.0 | 26.0 | NaN |
| 1 | 16.0 | 19.0 | NaN |
| 2 | NaN | NaN | NaN |
缺失值填充步骤
用 A 中所有值的均值来填充缺失值
A.stack().mean()
Out: 12.25
设置fill_value参数
fill_value = A.stack().mean()
这里相当于对数据框A进行均值填充形成了一个与数据框B维度一致的数据框Á
| A | B | C | |
|---|---|---|---|
| 0 | 6 | 19 | 12.25 |
| 1 | 14 | 10 | 12.25 |
| 2 | 12.25 | 12.25 | 12.25 |
进行相加
A.add(B, fill_value = A.stack().mean())
返回结果为:
| A | B | C | |
|---|---|---|---|
| 0 | 10.00 | 26.00 | 18.25 |
| 1 | 16.00 | 19.00 | 18.25 |
| 2 | 16.25 | 19.25 | 15.25 |
理解:缺失值填充相当于构造一个数据框Á,然后用数据框Á + 数据框B。