【问题标题】:Dataframe mean calculation output seems wrong数据框平均计算输出似乎错误
【发布时间】:2020-07-25 02:15:11
【问题描述】:

我试图找到表达基因的平均值,但 pandas 给我的结果与我预期的不同:

>>> np.mean(dataFrameLiverMean.loc[:,"ENSG00000000003.14"])
-1.708035422500241e-17
>>> dataFrameLiverMean.mean(axis=0)
ENSG00000000003.14    1.067522e-17
# clipped

See results here

我做错了什么?

【问题讨论】:

  • 你能解释一下你遇到了什么问题吗?我没有从帖子中理解任何内容
  • 帖子已编辑,我已重新上传屏幕截图 - 问题将从中清楚。

标签: python pandas dataframe mean


【解决方案1】:

您的平均值几乎为零 (10^-17),甚至低于数据类型的 machine precision(numpy 的 float 64 的精度为 2.22044604925e-16)。

我认为你观察到的只是噪音。

【讨论】:

  • 好吧,困扰我的是一个结果是阳性,另一个是阴性。另外,如果我做同样的计算意味着同样的方式,但首先选择特定的列 - 结果也不同:dataFrameLiverMean.loc[:,'ENSG00000000003.14'].mean() -1.708035422500241e-17 这里 pandas 正在计算,但结果不同。
  • 但基本上两个结果都为零。鉴于计算机的构建方式,一些对数值数据的操作会累积错误。这些错误的大小取决于您使用的数据类型(例如您使用的是float64,您在之前上传的图片中显示了它)。
  • 长话短说,如果您获得的结果小于机器精度(float64 为 2.22e-16),该值实际上与计算过程中的噪声无法区分,您应该解释值恰好为零 - 您的机器根本无法提供更准确的结果。值的差异可能是给定计算例程以获得平均值。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多