目录

上一个主题

5.2. Pandas快速入门

下一个主题

5.4. Pandas数据帧(DataFrame)


>>> from env_helper import info; info()
页面更新时间: 2022-10-16 21:46:57
运行环境:
    Linux发行版本: Debian GNU/Linux 11 (bullseye)
    操作系统内核: Linux-5.10.0-18-amd64-x86_64-with-glibc2.31
    Python版本: 3.9.2

5.3. Pandas 序列(Series)

Pandas 中序列(Series)是能够保存任何类型的数据(整数,字符串,浮点数,Python对象等)的一维标记数组。 轴标签统称为索引。这个概念与字典有点类似。

创建Pandas序列

Pandas序列可以使用以下构造函数创建 -

pandas.Series( data, index, dtype, copy)

构造函数的参数如下 -

  1. data 为来源数据,可以使用多种格式,如:ndarray,list,constants ;

  2. index 必须是唯一的和散列的索引值,与数据的长度相同。 如果没有索引被传递,缺省使用 np.arange(n)

  3. dtype 用于数据类型。如果没有,会尝试推断数据类型;

  4. copy 复制数据,默认为false。

可以使用各种 Python 中的序列来创建一个 Pandas 序列,如:

  • 数组

  • 字典

  • 标量值或常数

如果没有参数会创建一个基本序列,是一个空序列。

>>> import pandas as pd
>>> import numpy as np
>>> s = pd.Series()
>>> s
<ipython-input-2-1a4166753480>:3: DeprecationWarning: The default dtype for empty Series will be 'object' instead of 'float64' in a future version. Specify a dtype explicitly to silence this warning.
  s = pd.Series()
Series([], dtype: float64)

最好声明一下类型。

>>> pd.Series(dtype= np.float64)
Series([], dtype: float64)

从ndarray创建一个序列

如果数据是ndarray,则传递的索引必须具有相同的长度。 如果没有传递索引值,那么默认的索引将是范围 np.arange(n) ,其中 n 是数组长度。

>>> import numpy as np
>>> data = np.array(['a','b','c','d'])
>>> s = pd.Series(data)
>>> s
0    a
1    b
2    c
3    d
dtype: object

这里没有传递任何索引,因此默认情况下,它分配了从 0len(data)-1 的索引,即: 0 - 3

>>> data = np.array(['a','b','c','d'])
>>> s = pd.Series(data,index=[100,101,102,103])
>>> s
100    a
101    b
102    c
103    d
dtype: object

在这里传递了索引值。现在可以在输出中看到自定义的索引值。

从字典创建一个序列

字典(dict)可以作为输入传递,如果没有指定索引,则按排序顺序取得字典键以构造索引。 如果传递了索引,索引中与标签对应的数据中的值将被拉出。

>>> data = {'a' : 0., 'b' : 1., 'c' : 2.}
>>> s = pd.Series(data)
>>> s
a    0.0
b    1.0
c    2.0
dtype: float64

注意 - 字典键用于构建索引。

>>> data = {'a' : 0., 'b' : 1., 'c' : 2.}
>>> s = pd.Series(data,index=['b','c','d','a'])
>>> s
b    1.0
c    2.0
d    NaN
a    0.0
dtype: float64

注意观察 - 索引顺序保持不变,缺少的元素使用 NaN (不是数字)填充。

从标量创建一个序列

如果数据是标量值,则必须提供索引。将重复该值以匹配索引的长度。

>>> s = pd.Series(5, index=[0, 1, 2, 3])
>>> s
0    5
1    5
2    5
3    5
dtype: int64

从具有位置的序列中访问数据

序列中的数据可以使用类似于访问ndarray中的数据来访问。

>>> s = pd.Series([1,2,3,4,5],index = ['a','b','c','d','e'])

检索第一个元素。比如已经知道数组从零开始计数,第一个元素存储在零位置等等。

>>> s[0]
1

检索序列中的前三个元素。 如果a:被插入到其前面,则将从该索引向前的所有项目被提取。 如果使用两个参数(使用它们之间),两个索引之间的项目(不包括停止索引)。

>>> s[:3]
a    1
b    2
c    3
dtype: int64

检索最后三个元素,参考以下示例代码 -

>>> s[-3:]
c    3
d    4
e    5
dtype: int64

使用标签检索数据(索引)

一个序列就像一个固定大小的字典,可以通过索引标签获取和设置值。

使用索引标签值检索单个元素。

>>> s['a']
1

使用索引标签值列表检索多个元素。

>>> s[['a','c','d']]
a    1
c    3
d    4
dtype: int64

如果请求不存在的标签,则会出现异常。