【问题标题】:Best way to deal with xyz data处理 xyz 数据的最佳方法
【发布时间】:2014-03-20 09:59:09
【问题描述】:

我是 python 新手,正在尝试找出解决数据分析问题的最佳方法。如果这个问题看起来很基本,请道歉。我基本上需要帮助来确定是否要使用元组、字典或 pandas 数据框来存储我的数据。这是我的场景:

我的数据:我有一个 3D 空间数据集,其中的数据位于不均匀的 XYZ 位置。数据点的精确位置至关重要,所以我不能重新采样到一个均匀的网格,这会更容易处理。每个 XYZ 数据点都有一组相关的详细信息,包括字符、整数以及浮点和布尔类。我基本上有一个相当混乱的数据“云”。

我的目标:我希望能够检查数据集中每个“X”类型的点,并查看给定半径内所有其他点的属性(它们是什么类型,以及各种其他特征)。

我的问题:存储和查询此类数据的最有效方法是什么?直观地说,带有 x, y, z, ... 列的 pandas 数据框是有意义的,但考虑到我将使用大型数据集,我担心这是否是最有效的方法。创建一个 dict 对象是否明智,其中定义是 XYZ 元组,存储的值是包含点特征的进一步 dict 对象?有没有我错过的明显方法?

非常感谢任何帮助/建议!

提前致谢。

【问题讨论】:

  • 为什么你认为使用 pandas 会因为数据集大小而降低效率?在我看来,您真正的瓶颈是计算所有点之间的距离,以便您可以找到彼此半径内的所有点。使用pandas计算其他特征并按类别过滤应该很快,数据大小是多少?
  • 性能方面的熊猫应该没问题。引自 pandas 官方网站:pandas 是一个开源、BSD 许可的库,为 Python 提供高性能、易于使用的数据结构和数据分析工具
  • 感谢您的意见。数据将> 500mb。目前不确定,因为我还没有收集到它!
  • 一个 numpy recarray 可能对这种数据规模有用。

标签: python numpy 3d pandas tuples


【解决方案1】:

由于此用例的瓶颈似乎是对数据的空间查询,我会选择将坐标存储在高度优化的数据结构中以进行空间查询的方法,然后您可以使用字典按需检索点的其他特征。用于计算几何的高性能专用库,即 boost graph 和 CGAL 遵循类似的理念(例如,请参阅 boost http://www.boost.org/doc/libs/1_37_0/libs/graph/doc/using_property_maps.html 中的属性映射)

关于适当的数据结构,SciPy 可能有适合你的东西http://docs.scipy.org/doc/scipy/reference/spatial.html KDTree 将是最近邻查询的一个选项。 Pandas 可以存储数据,是的,但它没有专门的空间索引支持。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-17
    • 2020-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多