【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)


 

  • 3
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

立Sir

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值