【发布时间】: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