網(wǎng)站首頁(yè) 編程語(yǔ)言 正文
一. Series 簡(jiǎn)介
Series是一種類似于一維數(shù)組的對(duì)象,是由一組數(shù)據(jù)(各種NumPy數(shù)據(jù)類型)以及一組與之相關(guān)的數(shù)據(jù)標(biāo)簽(即索引)組成。僅由一組數(shù)據(jù)也可產(chǎn)生簡(jiǎn)單的Series對(duì)象
Series 總的來(lái)說(shuō)就是帶標(biāo)簽的一維數(shù)組,可存儲(chǔ)整數(shù)、浮點(diǎn)數(shù)、字符串、Python對(duì)象等類型的數(shù)據(jù)。標(biāo)簽軸通常叫做索引。
二. 實(shí)例化 Series
2.1 使用一維數(shù)組實(shí)例化
用一維數(shù)組實(shí)例化Series時(shí),索引長(zhǎng)度必須與數(shù)組長(zhǎng)度一致。沒(méi)有指定索引時(shí),Pandas會(huì)幫我們創(chuàng)建默認(rèn)的數(shù)值型索引。
In [1]: s1 = pd.Series([1, 2, 3, 4]) Out[1]: 0 1 1 2 2 3 3 4 dtype: int64 In [2]: s2 = pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd']) Out[2]: a 1 b 2 c 3 d 4 dtype: int64
注意: Pandas 是支持重復(fù)索引的。但我們也可以重置索引,具體操作方法在后續(xù)章節(jié)中會(huì)給出。
2.2 使用字典實(shí)例化
使用字典實(shí)例化Series時(shí), 如果未傳入索引,則索引的值為字典的key:
In [1]: pd.Series({'i': 0, 'j': 1, 'k': 2}) Out[1]: i 0 j 1 k 2 dtype: int64
2.3 使用標(biāo)量例化
使用標(biāo)量值實(shí)例化時(shí),必須提供索引。Series 按索引長(zhǎng)度重復(fù)該標(biāo)量值。
In [1]: pd.Series(6, index=[0, 1, 2]) Out[1]: 0 6 1 6 2 6 dtype: int64
三.Series 簡(jiǎn)單使用
3.1 為Series添加Name屬性
在實(shí)例化Series時(shí),可以傳入name參數(shù)為Series添加name屬性。同時(shí),Seires也支持重命名:
In [1]: s = pd.Series(6, index=[0, 1, 2], name='six') Out[1]: 0 6 1 6 2 6 Name: six, dtype: int64 In [2]: s.name Out[2]: 'six' In [3]: s = s.rename('sixsixsix') In [4]: s.name Out[4]: 'sixsixsix'
3.2 基于位置的切片
Series提供了類似于Python列表的切片方式:
In[0]: s = pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd']) In[1]: s[0:2] #取下標(biāo)為0和1的兩個(gè)數(shù)據(jù)(不包括2,也就是從第一個(gè)開(kāi)始取,取兩個(gè)數(shù)據(jù)) Out[1]: a 1 b 2 dtype: int64 In[2]: s[:3] #取前三個(gè)數(shù)據(jù) Out[2]: a 1 b 2 c 3 dtype: int64 In[3]: s[-2:] #取最后兩個(gè)數(shù)據(jù)(也可以理解為從倒查第二個(gè)數(shù)據(jù)一直取到末尾) Out[3]: c 3 d 4 dtype: int64 In[4]: s[[0,2,3]] #取第1、3、4這個(gè)三個(gè)數(shù)據(jù)(注意下標(biāo)是從0開(kāi)始的,轉(zhuǎn)換為位置時(shí)需+1) Out[4]: a 1 c 3 d 4 dtype: int64 #注意:如果輸入的位置大于列表的長(zhǎng)度則會(huì)報(bào)出“indexers are out-of-bounds”異常
3.3 基于索引的切片
Series可使用索引標(biāo)簽的值來(lái)提取值:
In [0]:s = pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd']) In [1]: s['a'] #提取s中,標(biāo)簽為a的值 Out[1]: a 1 dtype: int64 In [1]: s[['a', 'b', 'c']] #提取s中,標(biāo)簽為a, b, c的值 Out[1]: a 1 b 2 c 3 dtype: int64
如果傳入的索引標(biāo)簽的值不在Seires的軸索引中,那將會(huì)報(bào) KeyError 異常,這里建議大家使用Series的 get 方法獲取值,如果不存在,則會(huì)返回None,同時(shí)也可設(shè)置default參數(shù),用于不存在時(shí)的默認(rèn)返回值。
In [0]: s = pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd']) In [1]: s['f'] #提取s中,標(biāo)簽為f的值, f不存在,將會(huì)報(bào)出異常 Out[1]:KeyError In [2]:s.get('f') #提取s中,標(biāo)簽為f的值, 若f不存在,默認(rèn)返回None Out[2]:None In [3]:s.get('f'. default=-1) #提取s中,標(biāo)簽為f的值, 若f不存在,返回-1 Out[3]:-1
3.4 基于條件的切片
In[0]: s = pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd']) In[1]: s[s < 2] #提取s中,小于2的值 Out[1]: a 1 b 2 dtype: int64 In[1]: s[s> s.mean()] #提取s中,大于平均數(shù)的值 Out[1]: c 3 d 4 dtype: int64 In[1]: s[s.between(1, 3, inclusive=False)] #提取s中,值介于1,3之間的數(shù)據(jù)(不包含1,3) Out[1]: b 2 dtype: int64
在提取區(qū)間數(shù)據(jù)時(shí),如果想讓兩端的值包含其中(滿足兩端的值也被提取出來(lái)),只需要把 inclusive 參數(shù)的值賦為T(mén)rue
3.5 其他操作
Series 不用循環(huán)也可以像操作單個(gè)數(shù)值一樣快速進(jìn)行數(shù)學(xué)運(yùn)算:
In[0]: s = pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd']) In[1]: s + s Out[1]: a 2 b 4 c 6 d 8 dtype: int64 In[2]: s - 1 Out[2]: a 0 b 1 c 2 d 3 dtype: int64
Series 之間的操作會(huì)自動(dòng) 基于標(biāo)簽 對(duì)齊數(shù)據(jù). 如果一個(gè)Series中的標(biāo)簽在另一個(gè)Series中不存在,那么計(jì)算得到的結(jié)果將是NaN,即缺失值,有缺失值NaN的處理在后續(xù)章節(jié)也會(huì)講到。因此,我們不用顧及執(zhí)行操作的Series是否有相同的標(biāo)簽。 Pandas數(shù)據(jù)結(jié)構(gòu)集成的數(shù)據(jù)對(duì)齊的功能,是Pandas區(qū)別于大多數(shù)標(biāo)簽型數(shù)據(jù)處理工具的重要特性。
In[0]: s1 = pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd']) In[0]: s2 = pd.Series([3, 6, 11], index=['a', 'b', 'f']) In[1]: s1 + s2 Out[1]: a 4.0 b 8.0 c NaN d NaN f NaN dtype: float64
原文鏈接:https://juejin.cn/post/6926468320619298830
相關(guān)推薦
- 2022-09-20 go語(yǔ)言VScode?see?'go?help?modules'?(exit?status?1)問(wèn)題
- 2022-04-05 詳解C#如何實(shí)現(xiàn)讀寫(xiě)ini文件_C#教程
- 2023-03-27 react使用.env文件管理全局變量的方法_React
- 2023-10-15 字符串逆序輸出,編譯器優(yōu)化,循環(huán)代碼外提,無(wú)效代碼刪除
- 2022-04-27 Python學(xué)習(xí)筆記之字典,元組,布爾類型和讀寫(xiě)文件_python
- 2023-01-17 Android資源文件與層次式導(dǎo)航超詳細(xì)講解_Android
- 2022-03-26 正則表達(dá)式詳析+常用示例_正則表達(dá)式
- 2023-03-23 Pandas時(shí)間數(shù)據(jù)處理詳細(xì)教程_python
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過(guò)濾器
- Spring Security概述快速入門(mén)
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支