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

标签 python logic normalization transformation data-science

我有一个数据集,其中包含 3 万名客户在 6 个月内的页面浏览量。它还包括以下内容:

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

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

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

返回 0.0,表示数据不服从正态分布。

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

我确实尝试将它们转换为 Z 分数,但仍然没有成功。我可以转换我的数据以使其具有正态分布吗?有什么方法可以做到这一点吗?

最佳答案

在我工作的领域中,我们通常对数变换数据进行异方差处理,就像您的数据一样。在我的领域(质谱),小值比大值更有可能,所以我们最终得到指数分布。

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

有点像

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

当然,在记录转换之前,您还需要去掉任何零。

Image showing pre Vs post log transform

关于python - 如何将数据转换为正态分布,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52389676/

相关文章:

MYSQL-为一个用户存储多个电子邮件/地址的最佳设计

python - 非数字数据的 numpy vs 列表

Python Minidom XML 解析点四边形/嵌套子元素

c - C 中带有 malloc 的子字符串函数返回不正确的值

Python从索引处开始循环遍历列表

mysql - 使用where子句搜索一对多数据库

python - 规范化 Gensim 中的词袋数据

python - pandas.cusum() 与统计 CUSUM 测试相同吗?

Python 从多个模块记录到同一个日志文件

php - 我如何使用 "strcspn"或 "any other Approach to change key of Array"来获得适当的结果?