您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關(guān)Pandas中Series怎么用的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
Series是一種類似于一維數(shù)組的對象,是由一組數(shù)據(jù)(各種NumPy數(shù)據(jù)類型)以及一組與之相關(guān)的數(shù)據(jù)標簽(即索引)組成。僅由一組數(shù)據(jù)也可產(chǎn)生簡單的Series對象
Series 總的來說就是帶標簽的一維數(shù)組,可存儲整數(shù)、浮點數(shù)、字符串、Python對象等類型的數(shù)據(jù)。標簽軸通常叫做索引。
用一維數(shù)組實例化Series時,索引長度必須與數(shù)組長度一致。沒有指定索引時,Pandas會幫我們創(chuàng)建默認的數(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é)中會給出。
使用字典實例化Series時, 如果未傳入索引,則索引的值為字典的key:
In [1]: pd.Series({'i': 0, 'j': 1, 'k': 2}) Out[1]: i 0 j 1 k 2 dtype: int64
使用標量值實例化時,必須提供索引。Series 按索引長度重復(fù)該標量值。
In [1]: pd.Series(6, index=[0, 1, 2]) Out[1]: 0 6 1 6 2 6 dtype: int64
在實例化Series時,可以傳入name參數(shù)為Series添加name屬性。同時,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'
Series提供了類似于Python列表的切片方式:
In[0]: s = pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd']) In[1]: s[0:2] #取下標為0和1的兩個數(shù)據(jù)(不包括2,也就是從第一個開始取,取兩個數(shù)據(jù)) Out[1]: a 1 b 2 dtype: int64 In[2]: s[:3] #取前三個數(shù)據(jù) Out[2]: a 1 b 2 c 3 dtype: int64 In[3]: s[-2:] #取最后兩個數(shù)據(jù)(也可以理解為從倒查第二個數(shù)據(jù)一直取到末尾) Out[3]: c 3 d 4 dtype: int64 In[4]: s[[0,2,3]] #取第1、3、4這個三個數(shù)據(jù)(注意下標是從0開始的,轉(zhuǎn)換為位置時需+1) Out[4]: a 1 c 3 d 4 dtype: int64 #注意:如果輸入的位置大于列表的長度則會報出“indexers are out-of-bounds”異常
Series可使用索引標簽的值來提取值:
In [0]:s = pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd']) In [1]: s['a'] #提取s中,標簽為a的值 Out[1]: a 1 dtype: int64 In [1]: s[['a', 'b', 'c']] #提取s中,標簽為a, b, c的值 Out[1]: a 1 b 2 c 3 dtype: int64
如果傳入的索引標簽的值不在Seires的軸索引中,那將會報 KeyError 異常,這里建議大家使用Series的 get 方法獲取值,如果不存在,則會返回None,同時也可設(shè)置default參數(shù),用于不存在時的默認返回值。
In [0]: s = pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd']) In [1]: s['f'] #提取s中,標簽為f的值, f不存在,將會報出異常 Out[1]:KeyError In [2]:s.get('f') #提取s中,標簽為f的值, 若f不存在,默認返回None Out[2]:None In [3]:s.get('f'. default=-1) #提取s中,標簽為f的值, 若f不存在,返回-1 Out[3]:-1
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ù)時,如果想讓兩端的值包含其中(滿足兩端的值也被提取出來),只需要把 inclusive 參數(shù)的值賦為True
Series 不用循環(huán)也可以像操作單個數(shù)值一樣快速進行數(shù)學(xué)運算:
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 之間的操作會自動 基于標簽 對齊數(shù)據(jù). 如果一個Series中的標簽在另一個Series中不存在,那么計算得到的結(jié)果將是NaN,即缺失值,有缺失值NaN的處理在后續(xù)章節(jié)也會講到。因此,我們不用顧及執(zhí)行操作的Series是否有相同的標簽。 Pandas數(shù)據(jù)結(jié)構(gòu)集成的數(shù)據(jù)對齊的功能,是Pandas區(qū)別于大多數(shù)標簽型數(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
感謝各位的閱讀!關(guān)于“Pandas中Series怎么用”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。