1、Series
Series是一種類(lèi)似與一維數(shù)組的對(duì)象,由下面兩個(gè)部分組成:
values:一組數(shù)據(jù)(ndarray類(lèi)型)
index:相關(guān)的數(shù)據(jù)索引標(biāo)簽
1)Series的創(chuàng)建
兩種創(chuàng)建方式:
(1) 由列表或numpy數(shù)組創(chuàng)建
默認(rèn)索引為0到N-1的整數(shù)型索引
還可以通過(guò)設(shè)置index參數(shù)指定索引
s.index = list('abcdef')
Series中的存放的數(shù)據(jù)必須是一維的
特別地,由ndarray創(chuàng)建的是引用,而不是副本。對(duì)Series元素的改變也會(huì)改變?cè)瓉?lái)的ndarray對(duì)象中的元素。(列表沒(méi)有這種情況)
2)Series的索引和切片
可以使用中括號(hào)取單個(gè)索引(此時(shí)返回的是元素類(lèi)型),或者中括號(hào)里一個(gè)列表取多個(gè)索引(此時(shí)返回的仍然是一個(gè)Series類(lèi)型)。分為顯示索引和隱式索引:
(1) 顯式索引:
- 使用index中的元素作為索引值
- 使用.loc[](推薦)
#顯式索引
s.loc[0]
#進(jìn)行切片
s.loc['1':'5']
#隱式索引
s.iloc[0]
注意,此時(shí)是閉區(qū)間
3)Series的基本概念
可以把Series看成一個(gè)定長(zhǎng)的有序字典
可以通過(guò)shape,size,index,values等得到series的屬性
可以通過(guò)head(),tail()快速查看Series對(duì)象的樣式
當(dāng)索引沒(méi)有對(duì)應(yīng)的值時(shí),可能出現(xiàn)缺失數(shù)據(jù)顯示NaN(not a number)的情況
可以使用pd.isnull(),pd.notnull(),或自帶isnull(),notnull()函數(shù)檢測(cè)缺失數(shù)據(jù)
4)Series的運(yùn)算
(1) 適用于numpy的數(shù)組運(yùn)算也適用于Series
(2) Series之間的運(yùn)算
在運(yùn)算中自動(dòng)對(duì)齊不同索引的數(shù)據(jù)
如果索引不對(duì)應(yīng),則補(bǔ)NaN
2、DataFrame
DataFrame是一個(gè)【表格型】的數(shù)據(jù)結(jié)構(gòu),可以看做是【由Series組成的字典】(共用同一個(gè)索引)。DataFrame由按一定順序排列的多列數(shù)據(jù)組成。設(shè)計(jì)初衷是將Series的使用場(chǎng)景從一維拓展到多維。DataFrame既有行索引,也有列索引。
行索引:index
列索引:columns
值:values(numpy的二維數(shù)組)
1)DataFrame的創(chuàng)建
最常用的方法是傳遞一個(gè)字典來(lái)創(chuàng)建。DataFrame以字典的鍵作為每一【列】的名稱(chēng),以字典的值(一個(gè)數(shù)組)作為每一列。
此外,DataFrame會(huì)自動(dòng)加上每一行的索引(和Series一樣)。
同Series一樣,若傳入的列與字典的鍵不匹配,則相應(yīng)的值為NaN。
DataFrame屬性:values、columns、index、shape
2)DataFrame的索引
(1) 對(duì)列進(jìn)行索引
- 通過(guò)類(lèi)似字典的方式
- 通過(guò)屬性的方式
可以將DataFrame的列獲取為一個(gè)Series。返回的Series擁有原DataFrame相同的索引,且name屬性也已經(jīng)設(shè)置好了,就是相應(yīng)的列名。
(2) 對(duì)行進(jìn)行索引
- 使用.ix[]來(lái)進(jìn)行行索引 #對(duì)于行的檢索,返回值,也是Series
- 使用.loc[]加index來(lái)進(jìn)行行索引 #!!! ['A','B'],如果檢索多行返回的數(shù)據(jù),是DataFrame
- 使用.iloc[]加整數(shù)來(lái)進(jìn)行行索引 #左閉右開(kāi)
同樣返回一個(gè)Series,index為原來(lái)的columns。
(3) 對(duì)元素索引的方法
- 使用列索引
- 使用行索引(iloc[3,1]相當(dāng)于兩個(gè)參數(shù);iloc[[3,3]] 里面的[3,3]看做一個(gè)參數(shù))
- 使用values屬性(二維numpy數(shù)組)
3)DataFrame的運(yùn)算
(1) DataFrame之間的運(yùn)算
同Series一樣:
在運(yùn)算中自動(dòng)對(duì)齊不同索引的數(shù)據(jù)
如果索引不對(duì)應(yīng),則補(bǔ)NaN
(2) Series與DataFrame之間的運(yùn)算
【重要】
使用Python操作符:以行為單位操作(參數(shù)必須是行),對(duì)所有行都有效。(類(lèi)似于numpy中二維數(shù)組與一維數(shù)組的運(yùn)算,但可能出現(xiàn)NaN)
使用pandas操作函數(shù):
axis=0:以列為單位操作(參數(shù)必須是列),對(duì)所有列都有效。
axis=1:以行為單位操作(參數(shù)必須是行),對(duì)所有行都有效。
聯(lián)系客服