一、Series的创建
第一步:导入库 import numpy as np import pandas as pd
第二步:创建Series,有以下方法:
1、numpy的方法创建(一维数组的方法)
(1)arr = np.array([1,2,3,4,5,6,7,8,9])
ser01 = pd.Series(arr)
print(ser01)
运行结果:
0 1
1 2
2 3
3 4
4 5
5 6
6 7
7 8
8 9
dtype: int32
2、字典的方法创建
(1)dic = {'a':45, 'b':61, 'c':22, 'd':88} #字典的key就是Series的索引
ser01 = pd.Series(dic)
print(ser01)
运行结果:
a 45
b 61
c 22
d 88
dtype: int64
2、自身的方法创建
(1)ser01 = pd.Series(data = [89, 95, 83], index=['语文', '数学', '英语'])
print(ser01)
运行结果:
语文 89
数学 95
英语 83
dtype: int64
二、Series值的获取
###Series值的获取主要有两种方式:
1、方括号+索引的方式读取对应索引的数据,有可能返回多条数据
2、方括号+下标值的方式读取对应下标值的数据,下标值的取值范围为:[0,len(Series.values));另外下标值也可以是负数,表示从右往左获取数据
###Series获取多个值的方式:
1、类似NumPy中的ndarray的切片操作,通过方括号+下标值/索引值+冒号(:)的形式来截取series对象中的一部分数据.
ser01 = pd.Series(data = [89, 95, 83, 100, 95, 85, 84, 91], index=['语文', '数学', '英语', '历史', '政治', '生物', '物理', '化学'])
print(ser01['语文'])
print(ser01[0])
print(ser01[-1])
print(ser01[0:5])
运行结果:
89
89
91
语文 89
数学 95
英语 83
历史 100
政治 95
dtype: int64
三、Series的运算
1、NumPy中的数组运算,在Series中都保留了,均可以使用,并且Series进行数组运算的时候,索引与值之间的映射关系不会发生改变。
!!!注意:其实在操作Series的时候,基本上可以把Series看成NumPy中的ndarray数组来进行操作。ndarray数组的绝大多数操作都可以应用到Series上。
(1)ser01 = pd.Series({
'2019/4/15': 6563.22,
'2019/5/16': 5321.89,
'2019/6/15': 6028.35,
'2019/7/14': 5939.09
})
print(ser01)
print(ser01[ser01>6000])
print(ser01/100)
运行结果:
2019/4/15 6563.22
2019/5/16 5321.89
2019/6/15 6028.35
2019/7/14 5939.09
dtype: float64
2019/4/15 6563.22
2019/6/15 6028.35
dtype: float64
2019/4/15 65.6322
2019/5/16 53.2189
2019/6/15 60.2835
2019/7/14 59.3909
dtype: float64
四、Series的缺失值检测
1、pandas中的isnull和notnull两个函数可以用于在Series中检测缺失值,这两个函数的返回时一个布尔类型的Series
age = pd.Series({
'Tom': 26,
'Jim': 21,
'Susan': 25,
'Bob': 24
})
new_index = ['Tom','Jim','Susan','Jack','Bob']
age = pd.Series(age, index=new_index)
print(age)
print(pd.isnull(age))
print(pd.notnull(age))
运行结果:
Tom 26.0
Jim 21.0
Susan 25.0
Jack NaN
Bob 24.0
dtype: float64
Tom False
Jim False
Susan False
Jack True
Bob False
dtype: bool
Tom True
Jim True
Susan True
Jack False
Bob True
dtype: bool
五、Series的自动对齐
1、当多个series对象之间进行运算的时候,如果不同series之间具有不同的索引值,那么运算会自动对齐不同索引值的数据,如果某个series没有某个索引值,那么最终结果会赋值为NaN。
(1)ser01 = pd.Series({
'a' : 1,
'b' : 2,
'c' : 3,
'd' : 4
})
ser02 = pd.Series({
'f' : 1,
'e' : 2,
'a' : 3,
'c' : 4
})
print(ser01+ser02)
输出结果:
a 4.0
b NaN
c 7.0
d NaN
e NaN
f NaN
dtype: float64
六、Series及其索引的name属性
1、 Series对象本身以及索引都具有一个name属性,默认为空,根据需要可以进行赋值操作
(1)scores = pd.Series(data = [89, 95, 83, 100, 95, 85, 84, 91], index=['语文', '数学', '英语', '历史', '政治', '生物', '物理', '化学'])
scores.name = u'语文'
scores.index.name = u'考试成绩'
print(scores)
输出结果:
考试成绩
语文 89
数学 95
英语 83
历史 100
政治 95
生物 85
物理 84
化学 91
Name: 语文, dtype: int64