Pandas是Python的一个库,专门用于处理数据的库,里面提供了很强大的数据处理工具,可以使用下面命令安装这个库:
$ pip install pandas
Series是一种一维的数组对象,包含了一个值序列和数据标签,也就是索引(index),下面是一种最简单的序列:
import pandas as pd #引用pandas模块
obj = pd.Series([1, 2, 3, 4, 5])
print(obj)
#打印
0 1
1 2
2 3
3 4
4 5
dtype: int64
print(obj.value)
#打印
[1 2 3 4 5]
print(obj.index)
#打印
RangeIndex(start=0, stop=5, step=1)
#下面创建一个指定了index的序列
obj2 = pd.Series(data=[1, 2, 3, 4, 5], index=['a', 'b', 'c', 'd', 'e'])
print(obj2)
#打印
a 1
b 2
c 3
d 4
e 5
dtype: int64
print(obj2)
#打印
Index(['a', 'b', 'c', 'd', 'e'], dtype='object')
print(obj2['a']) #通过索引取的值
#打印
1
print(obj2[['a', 'b', 'd']]) #通过索引数组取值
#打印
a 1
b 2
d 4
dtype: int64
print(obj2[obj2 > 3]) #通过判断获取达到条件的值
#打印
d 4
e 5
dtype: int64
print(obj2 * 2) #和整数相乘,是将里面的值一次和整数相乘
#打印
a 2
b 4
c 6
d 8
e 10
dtype: int64
print('b' in obj2) #判断是否存在index=‘b’
#打印
True
print('f' in obj2)
#打印
False
#接下来,还可以通过字典生成序列
dic = {'h': 6, 'i': 7, 'j': 8, 'k': 9, 'l': 10}
obj3 = pd.Series(dic)
print(obj3)
#打印
h 6
i 7
j 8
k 9
l 10
dtype: int64
#在创建序列时,可以将排好序的index数组,传递给Series构造函数,那么得到的结果也是按照你给的顺序排好的
dic = {'h': 6, 'i': 7, 'j': 8, 'k': 9, 'l': 10}
tidx = ['i', 'k', 'l', 'j', 'm']
obj4 = pd.Series(dic, index=tidx)
print(obj4)
#打印
i 7.0
k 9.0
l 10.0
j 8.0
m NaN
dtype: float64
#注意,我传递的数组没有‘h’,所以‘h’不在obj4之内,但是传递了‘m’,由于没有找到对应的,所以使用NaN来表示这个值是空
#可以使用isnull和notnull来判断是否为空
print(pd.isnull(obj4))
#打印
i False
k False
l False
j False
m True
dtype: bool
print(pd.notnull(obj4))
#打印
i True
k True
l True
j True
m False
dtype: bool
print(obj4.isnull()) #同pd.isnull一样,同样的notnull也是一样
#打印
i False
k False
l False
j False
m True
dtype: bool
#两个序列可以做相加操作,如果有一个为NaN,那么结果也是NaN
print(obj3 + obj4)
#打印
h NaN
i 14.0
j 16.0
k 18.0
l 20.0
m NaN
dtype: float64
#Series对象是有name属性的,可以给序列定一个名字
obj4.name = 'hello'
obj4.index.name = 'world'
print(obj4)
#打印
world
i 7.0
k 9.0
l 10.0
j 8.0
m NaN
Name: hello, dtype: float64
#序列的index是可以重新设置的,按照位置传递一个数组进去
obj4.index = ['o', 'p', 'q', 'r', 's']
print(obj4)
#打印
o 7.0
p 9.0
q 10.0
r 8.0
s NaN
dtype: float64