我有一个数据集,它有20列和10.000行。我的计划是将数据集中的一些数据替换为NaN。我的任务是观察缺失值对数据集的影响
我的计划是使用Zipf分布生成每列的缺失百分比,然后根据这些百分比将一些值替换为NaN
例如,下面是我的代码:
import matplotlib.pyplot as plt
from scipy import special
import numpy as np
a = 1.01 # parameter
s = np.random.zipf(a, 200000)
count, bins, ignored = plt.hist(s[s<20], 20, density=True)
plt.show()
这是否可以得到条形图的百分比,这样我就可以根据条形图的百分比替换每列中的一些值?例如,第一列缺失80%,第二列缺失40%,第三列缺失25%,等等
你需要理解Zipf分布的定义。维基百科对这一点做了很好的解释。这是维基上的图片。
有两个重要参数
a> 1
和N
。参数a
对您的行有影响(在上图中a = s
),并且N
是大小当你们根据zipf分布生成数字时,你们必须考虑频率。在您的代码中,您使用了
density=True
,这意味着您的条高是标准化的,如果不使用此参数,您将看到确切的计数结果是:
精确编号的绘图:
结果是:
相关问题 更多 >
编程相关推荐