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'