Series
Series是一种类似于一维数组的对象,它由一组数据(各种NumPy数据类型)以及一组与之相关的数据标签(即索引)组成。仅由一组数 据即可产生最简单的Series
obj = pd.Series([4, 7, -5, 3])
Series的字符串表现形式为:索引在左边,值在右边。由于我们没 有为数据指定索引,于是会自动创建一个0到N1(N为数据的长度)的 整数型索引
可以通过Series 的values和index属性获取其数组表示 形式和索引对象
In [6]: obj.values
Out[6]: array([ 4, 7, -5, 3])
In [7]: obj.index
Out[7]: Int64Index([0, 1, 2, 3])
创建的Series带有一个可以对各个数据点进行 标记的索引
In [8]: obj2 = pd.Series([4, 7, -5, 3], index=['d', 'b', 'a', 'c'])
In [9]: obj2
Out[9]: d 4
b 7
a -5
c 3
In [10]: obj2.index
Out[10]: Index([d, b, a, c], dtype=object)
通过索引的方式选取Series中的 单个或一组值
NumPy数组运算(如根据布尔型数组进行过滤、标量乘法、应用 数学函数等)都会保留索引和值之间的链接
obj2[obj2>0]
d 4
b 7
c 3
dtype: int64
obj2*2
d 8
b 14
a -10
c 6
dtype: int64
如果数据被存放在一个Python字典中,也可以直接通过这个字典 来创建Series
In [20]: sdata = {'Ohio': 35000, 'Texas': 71000, 'Oregon': 16000, 'Utah': 5000}
In [21]: obj3 = pd.Series(sdata)
In [22]: obj3
Out[22]: Ohio 35000
Oregon 16000
Texas 71000
Utah 5000
如果只传入一个字典,则结果Series中的索引就是原字典的键(有序排列)
In [23]: states = ['California', 'Ohio', 'Oregon', 'Texas']
In [24]: obj4 = pd.Series(sdata, index=states) #值,键
In [25]: obj4
Out[25]: California NaN Ohio 35000 Oregon 16000 Texas 71000
在pandas中,它用于表 示缺失或NA值)。我将使用缺失(missing)或NA表示缺失数据。pandas 的isnull和notnull函数可用于检测缺失数据
In [26]: pd.isnull(obj4) In [27]: pd.notnull(obj4)
In [28]: obj4.isnull()
Series最重要的一个功能是:它在算术运算中 会自动对齐不同索引的数据
obj3
Ohio 35000
Texas 71000
Oregon 16000
Utah 5000
dtype: int64
obj4
California NaN
Ohio 35000.0
Oregon 16000.0
Texas 71000.0
dtype: float64
obj3+obj4
California NaN
Ohio 70000.0
Oregon 32000.0
Texas 142000.0
Utah NaN
dtype: float64
Series对象本身及其索引都有一个name属性
In [32]: obj4.name = 'population'
In [33]: obj4.index.name = 'state'
In [34]: obj4
Out[34]: state California NaN Ohio 35000 Oregon 16000 Texas 71000 Name: population
Series的索引可以通过赋值的方式就地修改