我是python的新手,正在尝试找出解决数据分析问题的最佳方法。如果这个问题看起来很基本,请道歉我基本上想要帮助确定是否要使用元组,dicts或pandas数据帧来存储我的数据。这是我的情景:
我的数据:我有一个3D空间数据集,数据位于不均匀的XYZ位置。数据点的精确位置至关重要,因此我无法重新采样到偶数网格,这将更容易处理。每个XYZ数据点都有一组相关的细节,包括字符,整数,浮点数和布尔类。我基本上有一个相当混乱的云'数据。
我的目标:我希望能够检查每一种类型的问题' X'在数据集中,查看给定半径内所有其他点的属性(它们是什么类型,以及各种其他特征)。
我的问题:存储和查询此类数据的最有效方法是什么?直观地说,一个包含x,y,z,......列的pandas数据框是有意义的,但鉴于我将使用大型数据集,我担心这是否是最有效的方法。创建一个dict对象是明智的,其中定义是XYZ元组,而存储的值是dict包含该点特征的对象吗?有没有明显的方法可以做到这一点,我错过了?
非常感谢任何帮助/建议!
提前致谢。
答案 0 :(得分:1)
由于这个用例的瓶颈似乎是对数据的空间查询,我会选择将坐标存储在高度优化的空间查询数据结构中的方法,然后你有一个字典,你可以根据需要检索点的其他功能。高性能专用库,即用于计算几何的boost图和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可以存储数据是,但它没有专门的空间索引支持。