pandas庫里的Series對象用來表示一維數(shù)據(jù)結(jié)構(gòu),跟python的數(shù)組類似绍些,但多了一些額外的功能捞慌。內(nèi)部結(jié)構(gòu)如下圖所示
由兩個相互關聯(lián)的數(shù)組組成,其中主數(shù)組用來存放數(shù)據(jù)(NumPy任意類型的數(shù)據(jù))遇革。主數(shù)組每一個元素都有一個與之相關聯(lián)的標簽卿闹,這些標簽存在J叫Idex的數(shù)組中
聲明Series對象
調(diào)用Series()函數(shù),把要存放在Series對象中的數(shù)據(jù)以數(shù)組形式傳入即可
聲明Series時若不指定標簽萝快,pandas默認的標簽是從0開始一次遞增的數(shù)值作為標簽锻霎,這種情況下,標簽與Series對象中元素的位置一致揪漩。
使用有意義的標簽旋恼,能幫助我們區(qū)分和識別每個元素。而不用考慮插入到Series中的數(shù)序奄容。
因此在調(diào)用構(gòu)造函數(shù)時冰更,最好指定index選項,賦值標簽昂勒,其中標簽為字符串類型蜀细。
index、values為Series對象的兩個屬性戈盈,所以想要單獨查看index或者value數(shù)組時可以通過下面的方法查看
選擇內(nèi)部元素
若想獲取Series對象內(nèi)部元素奠衔,把他作為普通的NumPy數(shù)組,指定鍵即可塘娶;或者指定位于索引位置處的標簽
跟從NumPy數(shù)組選擇多個元素方法相同归斤,可以像下面這樣選擇多項數(shù)據(jù)(切片),或者使用元素對應的標簽脏里,只不過傳入多個元素標簽時,需要將標簽放到數(shù)組中傳入
為元素賦值
與元素選取的思想相同虹曙,可以通過索引或者標簽選取元素后進行賦值
用NumPy數(shù)組或者其他Series對象定義新的Series對象
你可以使用NumPy數(shù)組或現(xiàn)有的Series對象定義新的Series對象
經(jīng)過以上操作迫横,新的Series對象中的元素并不是原NumPy數(shù)組或者Series對象的副本,而是他們的引用酝碳,如改變原有對象元素的值矾踱。新的Series對象中的元素也會改變。arr中的數(shù)據(jù)改變击敌,s1中的數(shù)據(jù)也會變介返;s中的數(shù)據(jù)改變拴事,s2中的數(shù)據(jù)也會改變沃斤。
篩選元素
panda庫的開發(fā)是已NumPy庫為基礎的圣蝎,因此就數(shù)據(jù)結(jié)構(gòu)而言,NumPy數(shù)組多種操作方法得意擴展到Series對象中衡瓶,其中就有根據(jù)條件篩選數(shù)據(jù)結(jié)構(gòu)中的元素這一方法徘公。如下圖,選擇Series對象中不小于8的元素
Series對象運算和數(shù)學函數(shù)
使用NumPy數(shù)組的運算符+哮针、-关面、*、/ ?或其他數(shù)序函數(shù)十厢,也使用Series對象
簡單的數(shù)學運算符直接編寫算術表達式即可
如果是NumPy庫中的數(shù)學函數(shù)等太,必須指定他們的出處np,并把Series實例作為參數(shù)傳入
Series對象的組成元素
Series對象往往包含重復元素。
我們聲明一個包含多個重復元素的Series對象
我們可以用unique()函數(shù)蛮放,查看Series對象中包含多少個不同的元素缩抡,value_counts()函數(shù)返回對象中不同的元素,同時返回每個元素在對象中出現(xiàn)的次數(shù)包颁,isin()函數(shù)可以用來判斷叢書關系瞻想,isin()返回布爾值,用于判斷給定的一列元素是否包含在數(shù)據(jù)結(jié)構(gòu)中
NaN(Not a Number)
我們對負數(shù)進行球?qū)?shù)時娩嚼,得到的返回結(jié)果是NaN(非數(shù)值)蘑险。數(shù)據(jù)結(jié)構(gòu)中若字段為空值或者不符合數(shù)字的定義時,用這個特定的值來表示岳悟。一般來講佃迄,NaN值表示數(shù)據(jù)有問題,必須對其進行處理竿音,尤其是在數(shù)據(jù)分析時和屎。盡管NaN值是數(shù)據(jù)有問題才產(chǎn)生的,然而在pandas中是可以定義這種類型的數(shù)據(jù)的春瞬,并把它添加到Series等數(shù)據(jù)結(jié)構(gòu)中柴信。創(chuàng)建數(shù)據(jù)結(jié)構(gòu)時,可為數(shù)組中元素缺失的項輸入np.NaN宽气。isnull()和notnull()函數(shù)可用來識別對象中是否有元素為NaN随常,他們返回的是布爾值的Series對象,這兩個函數(shù)可用作篩選條件萄涯。
Series用作字典
我們可以把Series當做字典(dict)對象來用绪氛,定義Series對象時,就可以利用這種相似性涝影。事實上枣察,我們可以用定義好的字典來創(chuàng)建Series對象。
上述例子中,不難發(fā)現(xiàn)序目,索引數(shù)組用的是字典的鍵來填充臂痕,索引對應的元素則用索引的鍵在字典中對應的值。用字典構(gòu)造Series對象時可以單獨指定索引猿涨,pandas會控制字典的鍵和數(shù)組索引標簽的相關性握童。如遇缺失值處,pandas就會為其添加NaN叛赚。
Series對象之間的運算
前面介紹過Series對象和標量之間的數(shù)學運算澡绩,Series對象之間也可以進行這類運算,甚至標簽也可以參加運算俺附。Series這種數(shù)據(jù)結(jié)構(gòu)在運算時有一大有點肥卡,它能通過識別標簽對其不一致的數(shù)據(jù)。
上述運算中得到了一個新的Series對象事镣,其中只有標簽相同的的元素會進行求和召调,其他只屬于任何一個Series的對象的標簽在新對象中都會出現(xiàn),只是他們的值均為NaN蛮浑。