【Pandas库】(2) Series的基本 *** 作方法

【Pandas库】(2) Series的基本 *** 作方法,第1张

【Pandas库】(2) Series的基本 *** 作方法

各位同学好,今天和大家分享一下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)


 

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5480171.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-12
下一篇 2022-12-12

发表评论

登录后才能评论

评论列表(0条)

保存