tom*_*sen 1 python arrays dictionary numpy pandas
我有一些关于是否使用 Pandas 或替代工具的具体问题。
使用 Pandas 而不是其他工具或数据结构的原因是什么?
当内存是一个问题时,Pandas 的成本有多大,有哪些更便宜的替代品?
这更多是一个定性的问题。熊猫的目的是什么?我找到完全符合我需要的字典和列表。大熊猫有什么大惊小怪的?
例如,如果有很多具有相同值的行,我可以使用更少的内存将此表存储在嵌套字典中:
#key0 key1 value
A 1 a
A 1 b
A 2 a
A 2 b
B 1 a
B 1 b
B 2 a
B 2 b
d = {'A': {1: ['a', 'b'], 'A': {2: ['a', 'b'], 'B': {1: ['a', 'b'], 'B': {2: ['a', 'b']}}
Run Code Online (Sandbox Code Playgroud)
为什么我要使用熊猫,当有一种更有效的方式来保存我的嵌套数据时?我只是不明白。谢谢!
我知道熊猫允许按名称索引、处理丢失的数据、进行连接、按值分组等的能力。
这更多是一个定性的问题。也许它属于 Meta Stack Exchange。
1)熊猫的目的是什么?大熊猫有什么大惊小怪的?
Pandas 主要以其将信息加载到数据帧中的能力而闻名,这允许代码一次对数据列进行推理。
这是Pandas 文档中的描述:
Pandas 是一个 Python 包,提供快速、灵活和富有表现力的数据结构,旨在使处理“关系”或“标记”数据既简单又直观。它旨在成为在 Python 中进行实用、真实世界数据分析的基本高级构建块。此外,它还有一个更广泛的目标,即成为任何语言中可用的最强大、最灵活的开源数据分析/操作工具。它已经在朝着这个目标前进。
2)为什么我要使用熊猫,当有一种更有效的方式来保存我的嵌套数据时?
根据这个 SO answer,Pandas 的内存开销并没有那么糟糕。
也就是说,如果内存是一个关键约束,那么您甚至可以比 python dicts 和 list 做得更好,这两者都保留对装箱数据(存储在对象中的值)的引用。相反,您可以使用具有未装箱数据的更密集的数据结构。一种选择是 Python 的数组模块,或者您可以使用numpy数组。