# -*- coding:utf-8 -*-
import pandas as pd
import string
'''
Series 对象是由两个数组组成,一个是索引(Index) 一个是值(values) 构造成键值对
'''
# Series数据初始化 列表
s1 = pd.Series([1, 2, 3], index=["a", "b", "c"])
print(type(s1)) # <class 'pandas.core.series.Series'>
print(s1)
# Series数据初始化 字典,key作为索引
a = {string.ascii_uppercase[i]: i for i in range(5)}
s1 = pd.Series(a)
print(s1)
s2 = s1.astype("float") # 更改类型
print(s2)
# 重新指定索引的话,根据所以取到其值,取不到就NaN
s2 = pd.Series(a, index=list(string.ascii_uppercase[3:6]))
print(s2)
# 根据索引来获取值
# print(s2["d"]) #索引找不到 报错
print(s2["D"]) # 3.0
print(s2["F"]) # nan
# 根据索引位置来获取值
print(s2[0]) # 3.0
print(s2[2]) # nan
# 切片
print(s2[:3]) # 取连续的前三条数据
print(s2[[0, 2]]) # 取不连续的两条数据
print(s2[s2 > 3]) # 取大于3的值
print(s1[["A", "C", "D"]]) # 通过索引名称来获取不连续的值
print(s1[0:4:2]) # 增加步长参数
# 获取索引名称
print(s1.index) # Index(['A', 'B', 'C', 'D', 'E'], dtype='object')
print(list(s1.index)) # ['A', 'B', 'C', 'D', 'E']
# 获取值
print(s1.values) # [0 1 2 3 4] <class 'numpy.ndarray'>
# 注意:Series中的where和numpy中的where有差异
print(s1.where(s1 > 2)) # 小等于2的标记为NaN
print(s1.where(s1 > 2, 10)) # 小等于2的标记为10