【Pandas库】(2) Series的基本操作方法
生活随笔
收集整理的這篇文章主要介紹了
【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)
?
總結
以上是生活随笔為你收集整理的【Pandas库】(2) Series的基本操作方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Pandas库】(1) Series的
- 下一篇: 【Pandas库】(3) DataFra