使用 Pandas 系列时的 6 个基本问题
了解pandas系列的特点
Pandas Series 是一个一维数组,可以有一个带标签的(即,不是数字的)索引。系列也可以被认为是表中的一列,可以存储各种类型的数据。
1. 你需要 Pandas 做什么?
Python的基本安装已经带来了四种不同的数据结构,可以在其中存储任何数据类型:
- 该列表是元素的有序集合。它是可变的并且能够存储重复的元素。
- 元组与列表非常相似,唯一的区别是不可更改。这意味着在创建元组后不能添加或删除任何元素。
- 该集合不允许重复条目。同时,顺序不固定。
- 从 Python 3.7 版开始,字典是键值对的有序集合。
尽管您已经可以使用这些数据结构处理许多用例,但在某些情况下它们还不够。例如,无法使用这些原生结构显示表格。因此,有所谓的模块,例如Pandas或 Numpy,可以使用基本安装中无法使用的更多功能。同时,来自模块的数据结构通常也比Python 的标准数据对象具有更高的性能。例如,Numpy 数组已针对向量和矩阵计算进行了优化。
同样,还有许多其他应用程序的模块可以补充Python编程语言及其功能。例如, TensorFlow或Scikit-Learn模块用于创建机器学习模型。
2. Pandas 系列有哪些组成部分?
Pandas 系列是Pandas中使用的最基本的数据结构之一。它是一种一维、有序的数据结构,例如,可用于将信息存储在表列中或将数字存储在向量中。
它提供了使用标记索引的可能性。但是,如果没有明确指定,则会自动设置从零开始的数字索引。因此,也很明显,熊猫系列中的元素顺序起着重要作用。Series 被称为有序数据结构。这意味着具有相同元素但顺序不同的两个 Pandas Series 不是同一个对象。
最简单的 Pandas Series 是空 Series,可以定义如下:
import pandas as pd
series_1 = pd.Series()
print(series_1)
Out:
Series([], dtype: float64)
可以在 Pandas Series 函数中指定一些参数来更改对象的属性。如果这些没有明确指定,它们将被自动设置或使用默认值。可以但不必设置以下参数:
- data:此参数定义要存储在系列中的数据。可以使用不同的数据结构,例如列表、字典,甚至是单个值。
- index:在索引的帮助下,可以为系列中的元素定义一个带标签的索引。如果未设置参数,则元素将自动编号,从零开始。
- dtype:可选参数 dtype 设置系列的数据类型。如果系列中的所有数据都具有相同的数据类型,这将特别有用。例如,您可以定义数字是存储为整数还是小数。
- name:使用此参数,可以命名系列。如果 Series 要成为DataFrame的一部分,这尤其有用。那么 name 就是DataFrame中对应的列名。
- copy:此参数只能取值 True 或 False,因此是一个布尔值。它指定传递的数据是否应保存为副本。然而,在大多数情况下,它并不重要。
当使用所有这些参数时,一个完全定义的系列看起来像这样:
series_1 = pd.Series([1, 2, 3], index = ["A", "B", "C"], dtype = "int64", name = "Series of Integers", copy = False)
print(series_1)
Out:
A 1
B 2
C 3
Name: Series of Integers, dtype: int64
3. 如何从 Series 中检索数据?
从 Pandas Series 查询数据时,我们使用方括号中的索引,正如我们从Python list 中已经知道的那样。如果文本索引可用,我们使用它,否则,可以使用数字索引:
series_1 = pd.Series(["first element", 2, "third element"])
print(series_1[0])
series_1 = pd.Series(["first element", 2, "third element"], index = ["A", "B", "C"])
print(series_1["A"])
Out:
first element
first element
我们可能只知道要从 Series 中查询的元素,而不知道相应的索引。但是,在 Pandas 系列中,找到关联的索引并不像使用列表那样容易。一种方法是将 Series 转换为列表,然后使用“.index”函数找出相应的索引:
series_1 = pd.Series(["first element", 2, "third element"], index = ["A", "B", "C"])
list(series_1).index(2)
Out:
1
4. 如何覆盖或添加系列中的值?
可以通过调用相应的索引来覆盖系列中的现有值:
series_1 = pd.Series(["first element", 2, "third element"], index = ["A", "B", "C"])
series_1["A"] = 1
series_1
Out:
A 1
B 2
C third element
dtype: object
如果要在现有系列中包含新值,也可以使用此调用。为此,只需使用尚未使用的索引:
series_1 = pd.Series(["first element", 2, "third element"], index = ["A", "B", "C"])
series_1["D"] = "fourth_element"
series_1
Out:
A first element
B 2
C third element
D fourth_element
dtype: object
5、如何查询有条件的数据?
特别是对于数字数据,从满足特定条件的系列中查询数据可能很有用。为此,相应的过滤器在方括号中而不是索引中定义。例如,这可用于输出系列中大于四的所有元素:
series_1 = pd.Series([1, 2, 3, 4, 5, 6, 7, 8], index = ["A", "B", "C", "D", "E", "F", "G", "H"])
series_1[series_1 > 4]
Out:
E 5
F 6
G 7
H 8
dtype: int64
如果要同时使用多个条件,可以在连续的方括号中定义它们。请注意,条件用逻辑“与”连接,这意味着仅输出满足所有条件的值。这允许我们为大于四但不等于八的所有值过滤我们的系列,例如:
series_1 = pd.Series([1, 2, 3, 4, 5, 6, 7, 8], index = ["A", "B", "C", "D", "E", "F", "G", "H"])
series_1[series_1 > 4][series_1 != 8]
Out:
E 5
F 6
G 7
dtype: int64
6. 如何从字典创建系列?
除了列表,您还可以使用Python 字典作为 Pandas 系列的数据。这样做的好处是不必明确指定索引。字典的键用作序列的索引,字典的值用作数据:
dict_1 = {"A": 1, "B": 2, "C": 3}
print(pd.Series(dict_1))
Out:
A 1
B 2
C 3
dtype: int64
7、pandas系列有什么用?
Pandas 系列主要与 Pandas DataFrames 结合使用。它们用于构建这些类似表格的数据结构,因为 DataFrame 的每一列都由一个单独的系列组成。它还可以用于存储具有不同数据类型的一维数据并使用它们进行计算。在机器学习领域,它们还可以用于存储一维向量并执行复杂的计算,例如向量乘法。
8. 如何从 Pandas Series 创建 DataFrame?
一个DataFrame基本上是几个 Pandas Series 的集合。因此,通过命名使用的系列可以相对容易地创建它。
series_1 = pd.Series(["first element", 2, "third element"], index = ["A", "B", "C"])
series_2 = pd.Series([4, 5, 6], index = ["A", "B", "C"])
series_3 = pd.Series(["i", "don't", "know"], index = ["A", "B", "C"])
pd.DataFrame([series_1, series_2, series_3])
Out:
Series 对象要么都具有相同的索引,要么没有索引,这一点很重要。否则,将为每个不同的索引创建一个单独的列,其他行没有值:
series_1 = pd.Series(["first element", 2, "third element"], index = ["A", "B", "C"])
series_2 = pd.Series([4, 5, 6], index = ["A", "B", "C"])
series_3 = pd.Series(["i", "don't", "know"], index = ["A", "B", "D"])
pd.DataFrame([series_1, series_2, series_3])
Out:
9. Pandas Series 和 Python List 有什么区别?
读到这里,你可能会觉得 Pandas Series 和Python List是两个非常相似的数据结构,主要区别在于列表只能使用数字索引,而 Pandas Series 也允许使用文本索引。
Series 和list之间的主要区别不在于它们的功能或结构,而在于它们的应用可能性。在数据科学领域,该系列主要用作表格数据的初步阶段,然后以图表的形式进行说明。这意味着可以具体地查看该系列。
另一方面,列表用于临时存储复杂的数据结构,因此它倾向于留在后台并用作复杂计算的工具。
这是你应该随身携带的东西
- Pandas Series 是一个一维数组,可以有一个带标签的(即,不是数字的)索引。
- 它主要与 Pandas DataFrames 一起使用。在这里,您可以将 Series 视为单个表列。
的形式进行说明。这意味着可以具体地查看该系列。
另一方面,列表用于临时存储复杂的数据结构,因此它倾向于留在后台并用作复杂计算的工具。
这是你应该随身携带的东西
- Pandas Series 是一个一维数组,可以有一个带标签的(即,不是数字的)索引。
- 它主要与 Pandas DataFrames 一起使用。在这里,您可以将 Series 视为单个表列。
- 系列在许多功能上类似于 Python 列表,不同之处在于列表不允许文本索引,但系列允许。