pandas学习笔记10

发布于:2024-05-10 ⋅ 阅读:(33) ⋅ 点赞:(0)

pandas.Series的一些应用
假设已经创建了一个series

a={'a':1,'b':5,'c':6}
ser=pd.Series(a)
print(ser)
ser['a']#通过标签获取数值
ser.index#返回标签
ser.values#返回值
ser['f']#不存在的标签取不出值

注意:会优先找标签中存在的值,没有再去找位置索引

ser[['a','b']]#可以通过多个索引标签访问多个数据,注意有两个方括号

当索引为object类型时,既可以使用标签索引也可以使用位置索引
Series 类似于固定大小的 dict,把 index 中的索引标签当做 key,而把 Series 序列中的元素值当做 value,然后通过 index 索引标签来访问或者修改元素值

s = pd.Series([6,7,8,9,10],index = ['a','b','c','d','e'])
print(s)
# 注意需要选择多个标签的值,用[[]]来表示(相当于[]中包含一个列表)
print(s[['a','c','d']]) # s['a','c','d']

Series使用标签切片运算与普通的Python切片运算不同:Series使用标签切片时,其末端是包含的。
Series使用python切片运算即使用位置数值切片,其末端是不包含。

# 位置索引和标签索引刚好一致,使用切片时,如果是数值会认为是python切片运算,不包含末端
s = pd.Series(np.random.rand(10))
s1[1:5]

当index为数值类型的时候,使用位置索引会抛出keyerror的异常,也就是说当index为数值类型的时候,索引使用的是名称索引。
但是在切片的时候,有很大的不同,如果index为数值类型的时候,切片使用的是位置切片。总的来说,当index为数值类型的时候:
进行索引的时候,相当于使用的是名称索引;
进行切片的时候,相当于使用的是位置切片;

s1= pd.Series([6,7,8,9,10],index = ['e','d','c','b','a'])
s1["c":"a"]
print(s.head()) # 默认查看前5条数据
print(s.head(1)) # 默认查看前1条数据
print(s.tail()) # 默认查看后5条数据
s = pd.Series(np.random.rand(5),index=list("abcde"))
# 新索引在上一个索引中不存在,生成新对象时,对应的值,设置为NaN
s1 = s.reindex(list("cde"))#取对应的三个
# 设置填充值
s2 = s.reindex(list("cde12"), fill_value=0)#多余的值用0填充

对齐运算
是数据清洗的重要过程,可以按索引对齐进行运算,如果没对齐的位置则补NaN,最后也可以填充NaN

s1 = pd.Series(np.random.rand(3), index=["Kelly","Anne","T-C"])

s2 = pd.Series(np.random.rand(3), index=["Anne","Kelly","LiLy"])

print("==========s1=========")
print(s1)
print("==========s2=========")
print(s2)
print("==========s1+s2=========")
print(s1+s2)#T-C与Lily没有对应值都会输出NAN
s = pd.Series(np.random.rand(5),index=list("abcde"))
print(s)
s1 = s.drop("a") # 返回删除后的值,原值不改变 ,默认inplace=False
print(s1) 
print(s)

删除操作

s = pd.Series(np.random.rand(5),index=list("abcde"))
print(s)
s1 = s.drop("a") # 返回删除后的值,原值不改变 ,默认inplace=False
print(s1) 
print(s)
s = pd.Series(np.random.rand(5),index=list("abcde"))
s1 = s.drop("a",inplace=True) # 原值发生变化,返回None
#s = s.drop("a")
print(s1) 
print(s)

inplace为true时会保留原来的位置,且为None

import pandas as pd
# 添加
s1 = pd.Series(np.random.rand(5),index=list("abcde"))
print(s1)

s1["s"] = 100  # 对应的标签没有就是添加,,有就是修改
print(s1)


网站公告

今日签到

点亮在社区的每一天
去签到