DataFrame自我理解:
如果你看到我前面的文章之后,那么接下來的話對于你對pandas DataFrame對象的理解就會更加的深刻和容易了。建議查看我之前所寫的博客。
對于Pandas DataFame對象,我自己的理解是,他可以看作是我們的一張表,Excel表,可以這樣理解。對于Series與DataFrame來比較的話我們可以把Series看成是DataFrame的一個維度,說白了就是excel表的一列.這是我自己的個人理解,我覺得還是比較直觀的。
DataFrame基本使用
首先定義DataFrame對象:
字典定義
在這里我們首先定義了一個字典,然后字典的每一個key 又對應(yīng)了一個列表,那么當(dāng)我們調(diào)用 pd.DataFrame(data)的時候,pandas會把字典的鍵作為列索引,每一個值分別作為該列的值

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

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

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

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

獲取某一列的兩種方式:

獲取多列:

獲取列不支持切片:

下面我來說一下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é)果

訪問DateFrame中的元素
我們先來看DateFrame對象的幾個常用屬性:
columns:獲取列索引,返回列表
index:獲取行索引,返回列表
values:獲取值?返回二維列表


兩個重要函數(shù)loc()和iloc()
簡單說一嘴,loc()是按照索引來取值,包括行列索引,iloc是按照索引的序號來取值,也是包含行列索引,所以他們都有兩個參數(shù),分別對應(yīng)行和列。簡單舉例說明:
loc():當(dāng)只有一個參數(shù)的時候默認(rèn)行


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

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

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

Dataframe自身查詢:

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

Dataframe的賦值
如果你已經(jīng)會了取值操作,那么賦值的話就是先取值,然后在改變值的操作,很簡單。下面我們新建了一列new=12,那么會導(dǎo)致一列的值全部為12
當(dāng)然我們還可以給columns和index取一個別名,方便管理查看。

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

取出單個元素然后賦值:

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

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

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

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

DataFrame轉(zhuǎn)置

索引對象
Series和DataFrame都很好的整合了索引,索引對象很重要,利用好他可以給我們帶來很多便利。
idxmin():按照ASCII碼來比較,選擇最小的索引
idxmax():按照ASCII碼來比較,選擇最大的索引

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

其它索引函數(shù)

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

redex() method參數(shù)

redex()? range(6)參數(shù)是產(chǎn)生了(0-5)來做索引的值
redex()還支持同時修改行列索引

Drop()刪除
Serie與Drop()

Dataframe與drop()
axis=0,刪除行
axis= 1刪除列

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

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

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

DataFrame對象與series運(yùn)算
例子中每一行對應(yīng)相減


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