目前,我想观察缺失值对我的数据集的影响。我将数据点 (10, 20, 90 %) 替换为缺失值并观察影响。下面这个函数就是把某个百分比的数据点替换为缺失的。
def dropout(df, percent):
# create df copy
mat = df.copy()
# number of values to replace
prop = int(mat.size * percent)
# indices to mask
mask = random.sample(range(mat.size), prop)
# replace with NaN
np.put(mat, mask, [np.NaN]*len(mask))
return mat
我的问题是,我想根据 zipf 分布/低功耗/长尾替换缺失值。例如,我有一个包含 10 列(5 列分类数据和 5 列数值数据)的数据集。我想根据 zipf 法替换 5 列分类上的一些数据点,左侧的列比右侧的缺失更多。
我使用 Python 来完成这项任务。
我在这个链接中看到了关于 zipf 分发的 Scipy 手册:https ://docs.scipy.org/doc/numpy-1.15.0/reference/generated/numpy.random.zipf.html但它仍然对我没有多大帮助。