多变量探索性分析:用聚类平均值填充缺失值的数据框
Multivariate Exploratory Analysis : Dataframe filling missing values with cluster mean values
我不想用 0 或变量平均值填充缺失值,而是想用数据集上其他类似观察的平均值来填充它们。
示例:A、B、C 和 D 是各种度量的单个样本。
V1 V2 V3
A 8.7 4.3 5
B nan 2.5 3
C 0.1 2.5 3
D 1.5 2.5 3
所以对变量 V2 和 V3 进行 K 均值聚类。
Returns 2 个簇:一个带有 A,第二个带有 B、C、D。
因为第二个集群与 B 相同,所以我想用 V1
的第二个集群平均值填充变量 V1 上的缺失值
所以对于 V1 中的 B 行,缺失值将是 0.8,因为 0.1 和 1.5 的平均值对应于 V1 上的 C 和 D 值。
这是一个非常简单的示例,所以我想知道如何使用 Python 对大型数据集执行此操作。
感谢您提供能够快速执行此操作并以这种方式“自动”填充缺失值的代码。
使用 sklearn
中的 KNNInputer
:
import pandas as pd
import numpy as np
from sklearn.impute import KNNImputer
data = {'V1': [8.7, np.nan, 0.1, 1.5],
'V2': [4.3, 2.5, 2.5, 2.5],
'V3': [5, 3, 3, 3]}
df = pd.DataFrame(data)
imputer = KNNImputer(n_neighbors=2)
out = imputer.fit_transform(df)
out = pd.DataFrame(out, index=df.index, columns=df.columns)
输出:
>>> out
V1 V2 V3
0 8.7 4.3 5.0
1 0.8 2.5 3.0
2 0.1 2.5 3.0
3 1.5 2.5 3.0
我不想用 0 或变量平均值填充缺失值,而是想用数据集上其他类似观察的平均值来填充它们。
示例:A、B、C 和 D 是各种度量的单个样本。
V1 V2 V3
A 8.7 4.3 5
B nan 2.5 3
C 0.1 2.5 3
D 1.5 2.5 3
所以对变量 V2 和 V3 进行 K 均值聚类。 Returns 2 个簇:一个带有 A,第二个带有 B、C、D。 因为第二个集群与 B 相同,所以我想用 V1
的第二个集群平均值填充变量 V1 上的缺失值所以对于 V1 中的 B 行,缺失值将是 0.8,因为 0.1 和 1.5 的平均值对应于 V1 上的 C 和 D 值。
这是一个非常简单的示例,所以我想知道如何使用 Python 对大型数据集执行此操作。
感谢您提供能够快速执行此操作并以这种方式“自动”填充缺失值的代码。
使用 sklearn
中的 KNNInputer
:
import pandas as pd
import numpy as np
from sklearn.impute import KNNImputer
data = {'V1': [8.7, np.nan, 0.1, 1.5],
'V2': [4.3, 2.5, 2.5, 2.5],
'V3': [5, 3, 3, 3]}
df = pd.DataFrame(data)
imputer = KNNImputer(n_neighbors=2)
out = imputer.fit_transform(df)
out = pd.DataFrame(out, index=df.index, columns=df.columns)
输出:
>>> out
V1 V2 V3
0 8.7 4.3 5.0
1 0.8 2.5 3.0
2 0.1 2.5 3.0
3 1.5 2.5 3.0