Series是一种一维的数组型对象,它包含了一个数值和数据标签,称为索引
import pandas as pd
import numpy as np
obj = pd.Series([4, 7, -5, 3])
obj
OUT:
0 4
1 7
2 -5
3 3
dtype: int64
通过valus属性和index属性分别获得Series对象的值和索引
obj.values
OUT:
array([ 4, 7, -5, 3], dtype=int64)
obj.index # 与range()相似
OUT:
RangeIndex(start=0, stop=4, step=1)
可以建立一个索引数列,用标签来标识每个数据点
obj2 = pd.Series([4, 7, -5, 3], ['a', 'b', 'c', 'd'])
obj2
OUT:
a 4
b 7
c -5
d 3
dtype: int64
可以使用标签来进行索引
obj2['a']
OUT:
4
obj2[['a', 'b', 'c']]
OUT:
a 4
b 7
c -5
dtype: int64
支持数学运算和数学函数
obj2[obj2 > 0]
OUT:
a 4
b 7
d 3
dtype: int64
obj2 * 2
OUT:
a 8
b 14
c -10
d 6
dtype: int64
np.exp(obj2)
OUT:
a 54.598150
b 1096.633158
c 0.006738
d 20.085537
dtype: float64
5.Series也可以看成是一个字典
'a' in obj2
OUT:
True
'e' in obj2
OUT:
False
可以使用字典生成Series
sdata = {
'a' : 1, 'c' : 3, 'b' : 2, 'd' : 4}
obj3 = pd.Series(sdata)
obj3
OUT:
a 1
c 3
b 2
d 4
dtype: int64
自定义字典键的顺序
states = ['a', 'b', 'c', 'e']
obj4 = pd.Series(sdata, states)
obj4
OUT:
a 1.0
b 2.0
c 3.0
e NaN
dtype: float64
在数据没有出现过的标签对应的值为NAN,因为‘d’不再states中,它被排除在结果对象外
pandas中使用isnull和notnull来检查缺失数据
pd.isnull(obj4)
OUT:
a False
b False
c False
e True
dtype: bool
pd.notnull(obj4)
OUT:
a True
b True
c True
e False
dtype: bool
obj4.isnull()
OUT:
a False
b False
c False
e True
dtype: bool
obj4.notnull()
OUT:
a True
b True
c True
e False
dtype: bool
如果没有规定索引顺序的话,新产生的Series对象的索引时排序好的字典键。如:obj3+obj4
obj3
OUT:
a 1
c 3
b 2
d 4
dtype: int64
obj4
OUT:
a 1.0
b 2.0
c 3.0
e NaN
dtype: float64
obj3 + obj4
OUT:
a 2.0
b 4.0
c 6.0
d NaN
e NaN
dtype: float64
Series对象自身和索引都有name属性
obj4.name = 'population'
obj4.index.name = 'state'
obj4
OUT:
state
a 1.0
b 2.0
c 3.0
e NaN
Name: population, dtype: float64
Series对象的索引可以通过按位置赋值的方式进行改变
obj
OUT:
0 4
1 7
2 -5
3 3
dtype: int64
obj.index = ['a', 'b', 'c', 'd']
obj
OUT:
a 4
b 7
c -5
d 3
dtype: int64