一维数据,带标签的数组python
须要指定 data,index,data和index是list类型或者 np.arange数组
s1 = pd.Series(np.arange(10), index=list(string.ascii_uppercase[:10]))
s2 = pd.Series([1, 2, 3], index=['a', 'b', 'c'])
s3 = pd.Series([1, 2, 3], index=np.arange(3))
s4 = pd.Series([1, 2, 3], index=list("efg"))
复制代码
直接传入字典便可,key为index,value为databash
dict = {"name": "Jack", "age": 30, "tel": 10086}
s5 = pd.Series(dict)
复制代码
能够修改Series的index,若是加入了新索引,对应的value为Nan, 注意NaN是float,pandas会自动更改成floatui
s6 = pd.Series(s1, index=list(string.ascii_uppercase[:15]))
s7 = s6.astype(object) #修改元素数据类型
复制代码
s1[3]
复制代码
3spa
s1['C']
复制代码
23d
s1[0:2]) # 经过位置-取前两行
复制代码
s1[[1, 8]]) # 经过位置-取不连续多行
s1[['A', 'C', 'F']]) # 经过索引名称-取不连续多行
复制代码
s1[0::2] # 取出全部行,步长为2
复制代码
s1[s1 > 5] # 按照单个条件取
s1[(s1 > 5) & (s1 % 2 == 0)] # 按照多个条件取
复制代码
index是一个类型code
type(s1.index)
s1.index
复制代码
for i in s1.index:
print(i)
复制代码
list(s1.index)
复制代码
['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J']cdn
s1.index[0::2]
复制代码
Index(['A', 'C', 'E', 'G', 'I'], dtype='object')blog
en(s1.index)
复制代码
10索引
s1.values
type(s1.values)
复制代码
[ 1 3 5 7 9 2 4 6 8 10] <class 'numpy.ndarray'>
s1.where(s1 > 3, 10)
复制代码
A 10 B 10 C 5 D 7 E 9 F 10 G 4 H 6 I 8 J 10
s1.where(s1 > 5)
复制代码
A NaN B NaN C NaN D 7.0 E 9.0 F NaN G NaN H 6.0 I 8.0 J 10.0
s1.mask(s1 > 5)
复制代码
A 0.0 B 1.0 C 2.0 D 3.0 E 4.0 F 5.0 G NaN H NaN I NaN J NaN
import pandas as pd
import numpy as np
import string
# pandas之Series
# 一维数据,带标签的数组
# 1. 建立Series
# 1.1 经过list 建立Series (须要指定 data,index)
# 指定indexdata和index是list类型或者 np.arange
s1 = pd.Series(np.arange(10), index=list(string.ascii_uppercase[:10]))
s2 = pd.Series([1, 2, 3], index=['a', 'b', 'c'])
s3 = pd.Series([1, 2, 3], index=np.arange(3))
s4 = pd.Series([1, 2, 3], index=list("efg"))
print(s1)
print(s2)
print(s3)
print(s4)
# 1.2 经过字典 建立Series(直接传入字典便可,key为index,value为data)
dict = {"name": "Jack", "age": 30, "tel": 10086}
s5 = pd.Series(dict)
print(s5)
# 1.3 经过旧的Series建立新的Series
# (能够修改Series的index,若是加入了新索引,对应的value为Nan,
# 注意NaN是float,pandas会自动更改成float)
s6 = pd.Series(s1, index=list(string.ascii_uppercase[:15]))
print(s6)
# 1.3.1 修改元素数据类型
# s7 = s6.astype(int) 由于存在nan,因此不能指定为int
s7 = s6.astype(object)
print(s7)
print("*" * 100)
# 2. Series的索引
# 2.1 经过所在的位置取值
print(s1[3])
# 2.2 经过索引名称取值
print(s1['C'])
# 3. Series的切片
s1 = pd.Series([1, 3, 5, 7, 9, 2, 4, 6, 8, 10], index=list(string.ascii_uppercase[:10]))
print(s1)
# 3.1 输入 start end 步长
print(s1[0:2]) # 经过位置-取前两行
print(s1[[1, 8]]) # 经过位置-取不连续多行
print(s1[['A', 'C', 'F']]) # 经过索引名称-取不连续多行
print(s1[0::2]) # 取出全部行,步长为2
print(s1[s1 > 5]) # 按照单个条件取
print(s1[(s1 > 5) & (s1 % 2 == 0)]) # 按照多个条件取
# 4. Series取出来全部索引index 是一个类型
# 4.1 全部索引index
print(type(s1.index))
print(s1.index)
# 4.2 遍历全部的index
for i in s1.index:
print(i)
# 4.3 index类型转为list
print(list(s1.index))
# 4.4 index能够直接切片
print(s1.index[0::2])
# 4.5 获得全部index的长度
print(len(s1.index))
# 5. Series取出来全部值values 是一个类型
print(s1.values)
print(type(s1.values))
# 6. where 条件
# 6.1 全部大于3的元素,都变成10
print(s1.where(s1 > 3, 10))
# 6.2 全部大于5的元素,保持不变,其余的都为Nan
print(s1.where(s1 > 5))
# 6.3 全部大于5的元素都变为Nan,其他的保持不变
s1 = pd.Series(np.arange(10), index=list(string.ascii_uppercase[:10]))
print(s1.mask(s1 > 5))
复制代码