Series
Series是一种一维的数组型对象,它包括一个值序列,和它们的索引。
直观的来说,它更像一个字典。因为它的形式为索引:值
生成Series一般有两种方法,通过列表和通过字典
1.列表生成Series
import pandas as pd
from pandas import Series, DataFrame
obj = pd.Series([1, 2, 4])
print(obj)
# 0 1
# 1 2
# 2 4
# dtype: int64
当没有为数据指定索引时,默认索引为0到N-1(N是数据的长度)。
可以通过index属性,来指定索引。
import pandas as pd
from pandas import Series, DataFrame
obj = pd.Series([1, 2, 4], index=['d', 'b', 'a'])
print(obj)
# d 1
# b 2
# a 4
# dtype: int64
2.字典生成Series
可以使用字典来生成一个Series。
此时索引为字典的键,值为对应的键值
import pandas as pd
from pandas import Series, DataFrame
dic = {'shanghai': 1000, 'wuhan': 2000, 'beijing': 3000}
obj = pd.Series(dic)
print(obj)
# shanghai 1000
# wuhan 2000
# beijing 3000
# dtype: int64
可以使用字典风格的方法对Series中的索引和数据值进行判断
import pandas as pd
from pandas import Series, DataFrame
dic = {'Shanghai': 4000, 'Wuhan': 2000, 'Beijing': 3000}
obj = pd.Series(dic)
print(5000 in obj.values) # False
print('Shanghai' in obj) # True
.
进行索引
选择数据时可以用标签和位置进行索引
import pandas as pd
from pandas import Series, DataFrame
dic = {'Shanghai': 4000, 'Wuhan': 2000, 'Beijing': 3000}
obj = pd.Series(dic)
print(obj['Shanghai']) # 4000
print(obj[0]) # 4000
传入一个标签列表,返回一个按列表内元素顺序排列的Seires
import pandas as pd
from pandas import Series, DataFrame
dic = {'Shanghai': 4000, 'Wuhan': 2000, 'Beijing': 3000}
obj = pd.Series(dic)
print(obj[['Beijing', 'Shanghai']])
# Beijing 3000
# Shanghai 4000
# dtype: int64
当然,也可以用切片。但这时,用标签切片和位置切片的结果有点区别
import pandas as pd
from pandas import Series, DataFrame
dic = {'Shanghai': 4000, 'Wuhan': 2000, 'Beijing': 3000}
obj = pd.Series(dic)
print(obj['Shanghai':'Beijing']) # 标签切片时包括:右边的元素
# Shanghai 4000
# Wuhan 2000
# Beijing 3000
# dtype: int64
print(obj[0:2]) # 位置切片时不包括:右边的元素
# Shanghai 4000
# Wuhan 2000
# dtype: int64
.
数学操作
Series的数学操作与Numpy相似,都是逐元素操作。
不过Seires在操作中将保存索引值连接。
import numpy as np
import pandas as pd
from pandas import Series, DataFrame
obj = pd.Series([1, 2, 3, 4])
print(obj * 2)
# 0 2
# 1 4
# 2 6
# 3 8
# dtype: int64
print(np.exp(obj))
# 0 2.718282
# 1 7.389056
# 2 20.085537
# 3 54.598150
# dtype: float64
另外,当合并两个Seires时,索引会自动对齐:
import pandas as pd
from pandas import Series, DataFrame
obj = pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])
obj2 = pd.Series([2, 3, 4, 5, 6], index=['b', 'c', 'a', 'd', 'f'])
print(obj+obj2)
# a 5.0
# b 4.0
# c 6.0
# d 9.0
# f NaN
在obj中,键’a’对应的值为1.
在obj2中,键’a’对应的值为4.因此,计算结果为5(这既是对齐的含义)
又因为键’f’未出现在obj中,因此计算结果中’f’对应的值为NaN
参考资料
《利用python进行数据分析》