我对是否使用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']}}
为什么我会想要使用pandas,当有更多内存有效的方式来保存我的嵌套数据?我只是没有得到它。谢谢!
我意识到pandas能够按名称进行索引,处理缺失数据,进行连接,按值分组等等。
这更像是一个定性问题。也许它属于Meta Stack Exchange。
答案 0 :(得分:4)
1)大熊猫的目的是什么?什么是大熊猫的大惊小怪?
Pandas主要以将数据加载到数据框中的能力而着称,它允许代码一次推理数据列。
以下是Pandas docs:
中的说明Pandas是一个提供快速,灵活和富有表现力的Python软件包 旨在使“关系”或“工作”的数据结构 “标记”数据既简单又直观。它旨在成为根本 用于执行实际,真实世界数据的高级构建块 用Python分析。此外,它有更广泛的目标 最强大,最灵活的开源数据分析/ 任何语言的操纵工具。它已经很好了 实现这一目标的方式。
2)当有更多内存有效的方式来保存我的嵌套数据时,为什么我要使用pandas?
根据this SO answer,Pandas的内存开销并不是那么糟糕。
也就是说,如果内存是一个关键约束,你甚至可以做得比python dicts和list更好,它们都保持对盒装数据的引用(存储在对象中的值)。相反,您可以使用具有未装箱数据的更密集的数据结构。可以选择使用Python array module,也可以使用numpy数组。