from pandas import Series,DataFrame
import pandas as pd
import numpy as np
# Series:是由数据和数据标签组成的也就是数据+索引 是pandas的基本数据结构
obj = Series([4,7,-5,3])
obj # 因为没有给数组指定索引系统会自动创建一个从0~N-1长度的整数型的索引
obj.values # 查看数值部分
obj.index #查看索引部分
obj2 = Series([4,7,-5,3],index=['d','b','a','c'])# 创建一个Series对各个数据点进行标记索引
obj2.values
obj2.index # 这时候的索引不再是0 1 2 3 而是 DBAC
obj2['a'] # 根据索引来取数组中的单个值
obj2['b'] = 6 # 对值进行修改
obj2[['c','a','d']] # 使用索引来取当中的一组值
obj2
# Numpy的数组运算比如布尔数组进行过滤,标量的乘法,应用数学函数都会保留索引和值的链接,也就是只改变值
obj2[obj2>0]
obj2 * 2
obj2 ** 2 # 这里返回的是副本
obj2
np.exp(obj2)
'b' in obj2
'e' in obj2# Series看成一个定长的有序字典 因为它是一个索引值到数据的一个映射
sdata = {'Ohio':35000,'Texas':71000,'Oregon':16000,'Utah':5000} # 字典
obj3 = Series(sdata) # 可以把一个字典转成一个Series对象
obj3
states = ['California','Ohio','Oregon','Texas']
obj4 = Series(sdata,index=states) #如果只是传入一个字典,结果就是索引是原字典的键
obj4#这里sdata中和states中索引相匹配的三个值会被找出来并且放到相应的位置上但是Carlifornia 找不到所以为NAN
pd.isnull(obj4) # isnull和notnull
pd.notnull(obj4)
obj4.isnull() #Series也有类似的方法
obj3
obj4
obj3+obj4 # Series在算术运算中会自动对齐不同索引的数据
''' 运行结果
California NaN
Ohio 70000.0
Oregon 32000.0
Texas 142000.0
Utah NaN'''
obj4.name = 'population' # 给Series
obj4.index.name = 'state' # 给索引命名
obj4
obj.index = ['Bob','Steve','Jeff','Ryan'] # Series 可以通过赋值的方式修改
obj