如何将数据转换为正态分布

问题描述 投票:0回答:1

我有一个数据集,包括3个月的30k客户的页面浏览量。它还包括以下内容:

  • 使用的唯一操作系统数
  • 唯一浏览器用户数
  • 使用的唯一cookie数量所有这些数字都是在六个月内完成的。

现在我尝试使用以下方法进行正常测试:

from scipy.stats import normaltest
k2, p = normaltest(df)
print(p)

返回0.0表示数据不遵循正态分布。

现在我想知道为什么会这样?我认为通常随着大小的增加,我们看到数据的正态分布,因为数据的大小为30k,我无法理解为什么它不是正常分布的。

我确实尝试将它们转换成Z分数,但仍然没有运气。我可以转换我的数据,以便我可以正常分布吗?我有什么方法可以做到吗?

python logic normalization transformation data-science
1个回答
1
投票

在我工作的区域中,我们通常使用Log变换数据,这可能与您的异常相似。在我的区域(质谱),小值远远大于大值,因此我们最终得到指数分布。

我猜你的数据看起来像我的,在这种情况下,你需要对数据进行日志转换,使其正常分布。我会这样做,以便我可以应用t检验和其他统计模型。

就像是

df_visits = df_visits.apply(lambda x: np.log(x))

当然,在记录变换之前,您还需要删除任何零。

Image showing pre Vs post log transform

© www.soinside.com 2019 - 2024. All rights reserved.