熊猫的局限性及其在Python中的替代方案


11

我在某处读到Pandas最初是为金融世界开发的,至少不是特别针对自然科学(物理学,生物学等)开发的,所以有没有类似的数据分析Python程序包更加“面向自然科学”?

我刚开始使用Pandas,已经遇到了两个问题,如果不使用其他软件包或自制解决方案便无法解决:

  • 如何处理不确定性?
  • 如何轻松定义我的数据单位?

也许还有其他问题,但我缺乏更准确的经验。目前,我考虑了不确定性软件包来解决第一点,但是我不确定它是否可以在Pandas上正常工作,并且不会降低计算速度。实际上,我并不是在寻找一种具有不确定性的计算方式,而只是一种将不确定性与导入的数据一起存储的简单方法。第二点,我没有找到比创建除DataFrame之外的字典来管理与每个数据关联的单元更好的解决方案。

如果您遇到过同样的问题,您是如何解决的?或者您在自然科学中使用了哪些其他软件包进行Python中的数据处理/存储/分析?


2
熊猫支持单位和不确定性的替代方法是Table灾难性的分类。
P3trus

1
看起来很棒,我不知道astropy有这种事情。即便如此,我还是看了一下文档,却无法找到明确的示例来设置不确定性Table(但是我找到了单位部分)。NDData似乎可以解决这个问题,但是我不确定这些类之间的区别。如果您不介意将您的评论变成2行示例的答案,我会很乐意接受!
克拉克

Answers:


5

我同意Davidmh的观点,即不确定性不应由自动库处理。您将很快遇到自动失败的情况(例如尝试进行傅立叶变换)。

但是,您说您只是想保留数据的不确定性。为什么不将它们添加为数据框中的额外列呢?这就是我通常如何处理大熊猫的不确定性。

熊猫不支持单位,但是任何东西都可以放入数据框,因此您可以直接使用数量包装。但是,并非所有功能都可以在熊猫中使用(尽管数量仍然令人惊讶),并且会降低性能。

已经进行了一些讨论以允许在熊猫中附加元数据,但到目前为止似乎还没有任何结果。

除了C ++ 11可能的例外,我不知道会提供给您真正良好的,一流的单元支持的语言或库。始终会损失性能并且缺乏兼容性


2

管理不确定性实际上是一个相当棘手的统计问题。当误差为正态分布,独立且较小时,使用平方偏导数进行误差传播的已知表达式很好。通常是这种情况;实际上,即使没有完全满足正常性或独立性,只要您只对合理估计间隔有兴趣,在大多数实际情况下,结果也可以合理地接近真实情况。

2±0.1=21.92.1

对于需要更高准确性的情况,如果您有一个不错的不确定性分析模型,则可以使用诸如最大似然之类的方法来得出正确的估计量。

但是,如果您想获得对任何可能的输入都有效的正确结果(想像一下,必须对噪声检测器进行建模,其中噪声与精度在同一数量级),请考虑所有相关性,并能够探索所有相关的参数空间,您需要蒙特卡洛方法。将随机噪声添加到您输入的多个实例中,然后运行完整的分析。当然,这可能意味着您必须将计算时间乘以数百或数千,但这始终是可并行的。

因此,最后,这完全取决于您想做什么,达到何种程度的准确性以及拥有多少资源。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.