Python Pandas Series

Series 是一个一维标记数组,能够保存任何类型的数据(整数、字符串、浮点数、python 对象等)。

Pandas Series

可以使用以下方法创建一个 Series 数据

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

参数说明如下:

  • data:一组数据(ndarray 类型)。
  • index:数据索引标签,如果不指定,默认从 0 开始。
  • dtype:数据类型,默认会自己判断。
  • name:设置名称。
  • copy:拷贝数据,默认为 False。

可以使用多种数据类型的输入来创建Series数据。例如:

  • 数组
  • 字典
  • 常量或标量

创建 Series

下面我们介绍通过不同的数据类型创建Series的方式

创建一个空 Series

可以创建的最基本的 Series 数据是空 Series。

import pandas as pd
s = pd.Series(dtype="object")
print(s)

运行示例

运行结果如下

Series([], dtype: object)

使用 ndarray 创建一个 Series

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

import pandas as pd
import numpy as np
data = np.array(['a','b','c','d'])
s = pd.Series(data)
print(s)

运行示例

运行结果如下:

0    a
1    b
2    c
3    d
dtype: object

对于上面的结果,其中 0,1,2,3这是索引; a,b,c,d 这是值。dtype: object 这是数据类型

在上例我们没有传递任何索引,因此默认情况下,它分配的索引范围为 0 到 len(data)-1,即 0 到 3。

下面我们指定索引

import pandas as pd
import numpy as np
data = np.array(['a','b','c','d'])
s = pd.Series(data,index=[100,101,102,103])
print(s)

运行示例

运行结果如下

100    a
101    b
102    c
103    d
dtype: object

现在我们可以在结果中看到自己定义的索引值。

使用 dict 创建 Series

dict 数据可以作为Series()方法的输入,并且如果未指定索引,则使用该字典的键作为索引。如果指定了索引,在对应于索引标签数据的值将被输出。

import pandas as pd
import numpy as np
data = {'a' : 0., 'b' : 1., 'c' : 2.}
s = pd.Series(data)
print(s)

运行示例

运行结果如下

a    0.0
b    1.0
c    2.0
dtype: float64

上例中,我们没有指定索引,所以字典键 a、b、c作为索引。

import pandas as pd
import numpy as np
data = {'a' : 0., 'b' : 1., 'c' : 2.}
s = pd.Series(data,index=['b','c','d','a'])
print(s)

运行示例

运行结果如下

b    1.0
c    2.0
d    NaN
a    0.0
dtype: float64

注意:索引顺序保持不变,缺失的元素用 NaN(非数字)填充。

使用标量创建 Series

如果数据是标量值,则必须提供索引。如果指定值的长度比指定的索引的长度小,那么会对值进行重复输出,直到和索引的长度匹配。

import pandas as pd
import numpy as np
s = pd.Series(5, index=[0, 1, 2, 3])
print(s)

运行示例

运行结果如下

0    5
1    5
2    5
3    5
dtype: int64

访问 Series 数据

在上面我们介绍了不同数据类型创建Series数据。接下来我们看一下对Series进行访问的不同方式

使用 位置 访问 Series数据

Series 中的数据可以类似于ndarray中的数据进行访问。

示例 1

检索第一个元素。正如我们已经知道的,数组的计数从零开始,这意味着第一个元素存储在第零个位置,依此类推。

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

# 检索第一个元素
print(s[0])

运行示例

运行结果如下:

1

示例 2

检索 Series 中的前三个元素。

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

#检索前三个元素
print(s[:3])

运行示例

运行结果如下

a    1
b    2
c    3
dtype: int64

示例 3

检索最后三个元素。

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

#检索最后三个元素
print s[-3:]

运行示例

运行结果如下

c  3
d  4
e  5
dtype: int64

使用标签访问 Series 数据

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

示例 1

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

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

#检索一个元素
print(s['a'])

运行示例

运行结果如下

1

示例 2

使用索引标签数组来检索多个元素。

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

#检索多个元素
print(s[['a','c','d']])

运行示例

运行结果如下

a    1
c    3
d    4
dtype: int64

示例 3

如果使用Series数据中不存在的标签,则会引发异常。

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

print(s['f'])

运行结果如下

Traceback (most recent call last):
  File "/usr/local/lib/python3.9/site-packages/pandas/core/indexes/base.py", line 3361, in get_loc
    return self._engine.get_loc(casted_key)
  File "pandas/_libs/index.pyx", line 76, in pandas._libs.index.IndexEngine.get_loc
  File "pandas/_libs/index.pyx", line 108, in pandas._libs.index.IndexEngine.get_loc
  File "pandas/_libs/hashtable_class_helper.pxi", line 5198, in pandas._libs.hashtable.PyObjectHashTable.get_item
  File "pandas/_libs/hashtable_class_helper.pxi", line 5206, in pandas._libs.hashtable.PyObjectHashTable.get_item
KeyError: 'f'

查看笔记

扫码一下
查看教程更方便