python - List、Series、Dictionary、Dataframes——什么时候使用哪个以及为什么?

标签 python pandas

<分区>

我参加的初级数据科学 Python 类(class)侧重于实际执行,而不是理论。跟随时,这是有道理的,但是当我不得不做一个没有指导的人时,我迷路了。我不确定这在像我这样的初学者中是否常见?它会变得非常令人沮丧。

我了解了列表、系列、字典和数据框的特性。但我不明白什么时候使用哪个以及为什么?有时它需要一个列表,有时是一个系列,有时是一个数组。似乎最终目标是将所有内容都放在数据框中?这样对吗?

我什至不确定我的问题是否有道理。

最佳答案

这个问题是完全正确的,但答案是“通常取决于情况”。 我将尝试概述一下: 首先是基本的 python 类型(List、Dictionary),然后是 pandas 库中的类型(Series、Dataframe)。一般来说,Python 类型更具多用途和通用性,而 pandas 数据类型则满足数据科学家的需求。

列表

如果您有许多相关项目需要在没有 key 的情况下访问,请使用列表 - 例如人名列表

names = ["John", "Peter"]

列表是有序的,可以使用列表理解或 filter()、map() 等函数轻松过滤。 列表是适用于大量数据的瑞士军刀,但如果您需要通过 ID 访问数据,则不应使用列表。对于该用例,请使用字典。

没有什么能阻止您将不同类型的对象添加到列表中,例如[1, "A", {}] 但这通常不是一个好主意。

字典

字典提供了存储各种对象并通过已知值访问它们的能力。 例如

data = {"John": {"Age": 16, "Stupid": False}, "Peter": {"Age": 20, "Stupid": True}}
john = data["John"]

如果您需要通过这样的值获取对象,这将非常方便。也可以使用 data.iterdict() 迭代值,但如果您只需要迭代数据,请将其保存为列表。

如果您将数据保存在列表或字典中,这通常是一个设计问题 - 两者都可以,但通常一种风格更受欢迎:例如如果需要迭代数据,更喜欢列表,如果需要通过 id 随机访问,则使用字典。

由于 Python 3.7 字典是有序的,所以如果你迭代它们,它们将保持它们的顺序,但旧的 python 版本不是这种情况。在这种情况下使用 orderedDict 或使用列表。

没有什么能阻止您向字典中添加不同类型的对象,但这通常不是一个好主意。

设置

最后,python中还有集合。集合的行为很像字典,但支持集合论中的操作,例如交集、子集等。如果您必须比较或减去数据组,这会非常方便。

系列

Series 是纯 Pandas 库结构。他们从根本上将数据视为表格中的列 - 特定类型和特定长度的数据点“列表”。此外,该列有一个名称。

从技术上讲,Series 不是一个列表,而是一个 numpy 数组——它比 python 列表更快、更小(在内存方面)。所以对于很多元素来说,一个Series有更好的表现。

系列还提供了操作和描述列表所没有的数据的方法。 如果我需要用 Series 做一些只有 Series 支持的事情,我会使用 Series,例如绘制直方图。

数据框

也是 Pandas 类型。包含数据的表格 View :基本上是系列列表。提供丰富的功能来查看和操作数据。非常适合表格数据的数据分析,但不是真正的通用数据格式(尽管非常方便)。 将其用于您要分析的数据 - 不适用于您从 API 等获取的数据。

关于python - List、Series、Dictionary、Dataframes——什么时候使用哪个以及为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58280677/

相关文章:

python - 使用 Python 验证 Sharepoint REST API 时出现未经授权的错误

python - 在 Pandas 中附加到一个空的 DataFrame?

python - 映射和合并来自另一个数据框的值

python - Python 法语词典

python - Django 没有模块命名设置

python - 如何为Django Rest Framework指定过滤数据参数?

python - 获取 pandas DataFrame 的复杂平均值

python - 带有内部堆叠子表的 Pandas DataFrame 表

python - 为什么 Pandas 和 Numpy 对与 NaN 的成对相关产生不同的结果?

Python:创建对象引用列表