熊猫的用途/目的是什么?

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。

Ray*_*ger 5

1)熊猫的目的是什么?大熊猫有什么大惊小怪的?

Pandas 主要以其将信息加载到数据帧中的能力而闻名,这允许代码一次对数据列进行推理。

这是Pandas 文档中的描述:

Pandas 是一个 Python 包,提供快速、灵活和富有表现力的数据结构,旨在使处理“关系”或“标记”数据既简单又直观。它旨在成为在 Python 中进行实用、真实世界数据分析的基本高级构建块。此外,它还有一个更广泛的目标,即成为任何语言中可用的最强大、最灵活的开源数据分析/操作工具。它已经在朝着这个目标前进。

2)为什么我要使用熊猫,当有一种更有效的方式来保存我的嵌套数据时?

根据这个 SO answer,Pandas 的内存开销并没有那么糟糕。

也就是说,如果内存是一个关键约束,那么您甚至可以比 python dicts 和 list 做得更好,这两者都保留对装箱数据(存储在对象中的值)的引用。相反,您可以使用具有未装箱数据的更密集的数据结构。一种选择是 Python 的数组模块,或者您可以使用numpy数组。