pandas DataFrame對象介紹及簡單使用

DataFrame自我理解:

如果你看到我前面的文章之后,那么接下來的話對于你對pandas DataFrame對象的理解就會更加的深刻和容易了。建議查看我之前所寫的博客。

對于Pandas DataFame對象,我自己的理解是,他可以看作是我們的一張表,Excel表,可以這樣理解。對于Series與DataFrame來比較的話我們可以把Series看成是DataFrame的一個維度,說白了就是excel表的一列.這是我自己的個人理解,我覺得還是比較直觀的。

DataFrame基本使用


首先定義DataFrame對象:

字典定義

在這里我們首先定義了一個字典,然后字典的每一個key 又對應(yīng)了一個列表,那么當(dāng)我們調(diào)用 pd.DataFrame(data)的時候,pandas會把字典的鍵作為列索引,每一個值分別作為該列的值

1

series定義

在這里,我們首先利用上面的字典值構(gòu)造三個series對象,然后以一個列表,元組其實(shí)也可以的方式傳入,就可以得到了一個DataFrame對象了

2

DataFrame定義的時候有一個columns參數(shù)可用來指定列索引,具體請對比frame和frame2

3

既然有列索引,那么也會有行索引,一般在定義的時候,如果我們不指定,那么默認(rèn)從0開始,但是我們還有一個很方便的函數(shù),可以是我們把DataFrame的某一列變成行索引,下面我們就把frame的color指定成行索引了

4

DataFrame元素的基本行列獲取

我們同樣也可以使用切片操作來獲取指定的行和列,也可以指定步長,具體如下

5

獲取某一列的兩種方式:

6

獲取多列:


7

獲取列不支持切片:


8

下面我來說一下index,和用numpy更快創(chuàng)建對象的方法:

index:就是說我們可以自定義行索引

圖二,我們使用numpy提供的arange()函數(shù)創(chuàng)建一個具有16個元素的數(shù)組,然后調(diào)用reshape函數(shù)將它變成一個4*4的二維數(shù)組,因?yàn)楸硎嵌S的嘛,既然有columns,index,那么我們就自定義兩者,得到如下結(jié)果

9


訪問DateFrame中的元素

我們先來看DateFrame對象的幾個常用屬性:

columns:獲取列索引,返回列表

index:獲取行索引,返回列表

values:獲取值?返回二維列表

10


11

兩個重要函數(shù)loc()和iloc()

簡單說一嘴,loc()是按照索引來取值,包括行列索引,iloc是按照索引的序號來取值,也是包含行列索引,所以他們都有兩個參數(shù),分別對應(yīng)行和列。簡單舉例說明:

loc():當(dāng)只有一個參數(shù)的時候默認(rèn)行

12
13

loc(),第二個代表列索引,默認(rèn)全部


14

加入第二個參數(shù),并切片,大家要自己多敲代碼體會呀


15

iloc(),與loc()基本類似,只不過是他是以index序號為準(zhǔn),舉例如下:


16

Dataframe自身查詢:

17

Dataframe獲取某一列得某一個值:

18

Dataframe的賦值

如果你已經(jīng)會了取值操作,那么賦值的話就是先取值,然后在改變值的操作,很簡單。下面我們新建了一列new=12,那么會導(dǎo)致一列的值全部為12

當(dāng)然我們還可以給columns和index取一個別名,方便管理查看。

19

新建一列,讓它的每一個值都不同,你可以自己手動輸入,當(dāng)然你也可以先創(chuàng)建一個Series然后在創(chuàng)建一列

20

取出單個元素然后賦值:


21

元素關(guān)系

isin()函數(shù)用來判斷DataFrame對象里面是否存在相應(yīng)的元素,有的話返回True,否則返回False,與Series一樣,要查看滿足條件的元素,直接加一個括號即可,其實(shí)都很相識的

22


刪除一列

我們可以使用del來刪除我們不需要的列


23


過濾

利用bool過濾出我們所需要的值嵌套字典生成DataFrame

24


嵌套字典生成DataFrame

我們可以使用嵌套字典來生成DataFrame,注意看外層及內(nèi)層字典的鍵值,pandas很智能的可以判斷出鍵值是否對應(yīng),沒有的話以NaN代替值

25

DataFrame轉(zhuǎn)置


26


索引對象

Series和DataFrame都很好的整合了索引,索引對象很重要,利用好他可以給我們帶來很多便利。

idxmin():按照ASCII碼來比較,選擇最小的索引

idxmax():按照ASCII碼來比較,選擇最大的索引

26

有時候我們還有一個需求,那就是要判斷index是否有重復(fù),那么我們可以調(diào)用index.is_unique查看結(jié)果

27

其它索引函數(shù)

使用reindex()改變索引,在對象創(chuàng)建后,我們不能直接修改索引,他是不可一直接修改的,但pandas也給我們提供了一些修改索引的函數(shù)。

28

redex() method參數(shù)

29

redex()? range(6)參數(shù)是產(chǎn)生了(0-5)來做索引的值

redex()還支持同時修改行列索引

30

Drop()刪除

Serie與Drop()

31

Dataframe與drop()

axis=0,刪除行

axis= 1刪除列

32

算術(shù)和數(shù)據(jù)對齊?

用一句話來說就是pandas會使用NaN來對齊我們在運(yùn)算,操作過程中不能一一匹配的數(shù)據(jù),

series數(shù)據(jù)對齊

33

DataFrame數(shù)據(jù)對齊

34

DataFrame對象之間除了直接使用諸如+來進(jìn)行加運(yùn)算,還提供了一些一致的函數(shù)

35

DataFrame對象與series運(yùn)算

例子中每一行對應(yīng)相減

36


37

總結(jié):

感覺寫了好多,這里只是一個入門,希望對大家有幫助。如有錯誤,請指正,謝謝,有幫助的可以點(diǎn)贊支持一下

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容