各位同学好,今天和大家分享一下Pandas库中Series的基本 *** 作方法。
内容有:①检查缺失值;②通过索引获取数据;③布尔索引;④name属性;⑤读取前几行数据;⑥读取后几行数据。首先我们先定义一个Series
import pandas as pd #导入pandas库 person = {"name":"阿强","age":21,"class":"一班"} #定义一个字典person # 生成一个Series,给它命名s1,以列表中给定的索引顺序排序,其中索引'sex'对应的值为None s1 = pd.Series(person,["name","age","class","sex"])
(1)检查缺失值 方法: Series名.isnull() 和 Series名.notnull()
isnull() 判断索引对应的值是否为空,若为空,返回True。语句返回值为Series类型。
notnull() 判断索引对应的值是否为非空,若为空,返回False。
如下图所示,s1中索引'sex'对应的值为nan,因此用isnull()判断后,s2接收返回值,'sex'的返回值是True,其余返回的都是False。并且s2为Series类型。
#(1)检查缺失值 s2 = s1.isnull() # isnull判断值是否为空,空就返回一个True s3 = s1.notnull()
(2)通过索引获取数据 获取索引的方法:Series名.index 获取值的方法: Series名.values
#(2)通过索引获取数据 m = s1.index #获取索引 n = s1.values #获取值2.1 获取单个数据 ① 通过下标获取 Series名[索引号] ② 通过标签名获取 Series名[标签名]
s4 = s1[1] # 通过下标获取数据 s5 = s1["age"] # 通过标签名获取数据2.2 获取多个数据 ① 通过下标获取 Series名[[索引号1,索引号2]] #获取索引号1和2对应的数据 ② 通过标签名获取 Series名[[标签名1,标签名2]]
# 选取多个数据 s6 = s1[[1,3]] #获取索引为1行和3行的数据(0,1,2,3) s7 = s1[["name","age"]] #获取索引为’name'和'age'行的数据2.3 切片获取数据 ① 通过下标获取 Series名[索引号1:索引号2] #下标切片顾头不顾尾 ② 通过标签名获取 Series名[标签名1:标签名2] #标签名切片顾头顾尾
# 切片取值 s8 = s1[1:3] #下标切片顾头不顾尾,获取s1中1、2行数据 s9 = s1["name":"class"] #标签切片顾头顾尾,获取'name'、'age'、'class'行
(3)布尔索引 Series名[条件判断]
布尔索引可理解为True和False。
如下,我们定义了一个Series类型数据s10,下式中s10[s10>3]可理解为,s10中索引大于3的值为True,小于等于3的值为False。s10[True]会进行输出,即找到s10中所有大于3的索引和值。
import numpy as np a1 = np.arange(1,6) #从1到5,步长为1,即1、2、3、4、5 s10 = pd.Series(a1,["a","b","c","d","e"]) #数组a1变成Series类型,改变索引名,由原来的0到4变成'a'到'e' s11 = s10[s10>3] #取出s10的值大于3的数据
(4)索引与数据的对应关系不被运算结果影响
让Series类型乘以一个数,Series中的索引不会发生改变,但是所有的值都会乘以该数。数值计算会到后续章节再讲,目前不需要掌握。
s12 = s10*2 #使对应数据都*2 #数据values发生变化,对应的索引不变
(5)name属性 改变对象的名称: Series名.name = 自定义名称 改变对象的索引名称: Series名.index.name = 自定义名称
如果不喜欢官方默认定义的对象名,可自定义
# name属性 s10.name = "temp" #对象名 s10.index.name = "year" #对象索引名
(6)读取前几行数据 方法: Series名.head() # 默认读取前5行数据 Series名.head(n) # 也可自己指定读取前n行
如果数据量很大,可使用该方法读取前几行先看看
# 读取前几行数据,默认前5行 s13 = s10.head(2)
(7)读取后几行数据 方法: Series名.tail() # 默认读取后5行数据 Series名.tail(n) # 也可自己指定读取后n行
# 读取后几行数据,默认后5行 s14 = s10.tail(3)
完整代码如下:
#以下代码均可运行 import pandas as pd #导入pandas库 person = {"name":"阿强","age":21,"class":"一班"} #定义一个字典person # 生成一个Series,给它命名s1,以列表中给定的索引顺序排序,其中索引'sex'对应的值为None s1 = pd.Series(person,["name","age","class","sex"]) # Series基本用法 #(1)检查缺失值 #==1== Series名.isnull() Series名.notnull() # isnull判断是否为空,空就返回一个True s2 = s1.isnull() s3 = s1.notnull() #(2)通过索引获取数据 m = s1.index #获取索引 n = s1.values #获取值 #==1== 通过下标获取数据 s4 = s1[1] #==2== 通过标签名获取数据 s5 = s1["age"] #==3== 选取多个 s6 = s1[[1,3]] #获取索引为1行和3行的数据(0,1,2,3) s7 = s1[["name","age"]] #获取索引为’name'和'age'行的数据 #==4== 切片取值 s8 = s1[1:3] #下标切片顾头不顾尾,获取s1中1、2行数据 s9 = s1["name":"class"] #标签切片顾头顾尾,获取'name'、'age'、'class'行 #(3)布尔索引 import numpy as np a1 = np.arange(1,6) #从1到5,步长为1,即1、2、3、4、5 s10 = pd.Series(a1,["a","b","c","d","e"]) #数组a1变成Series类型,改变索引名,由原来的0到4变成'a'到'e' s11 = s10[s10>3] #取出s10的值大于3的数据 #(4)索引与数据的对应关系不被运算结果影响 s12 = s10*2 #使对应数据都*2 #数据values发生变化,对应的索引不变 #(5)name属性 print(s10) s10.name = "temp" #对象名 s10.index.name = "year" #对象索引名 print(s10) #(6) Series名.head(n) # 读取前几行数据,默认前5行 s13 = s10.head(2) #(7) Series名.tail(n) # 读取后几行数据,默认后5行 s14 = s10.tail(3)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)