要使用pandas,你首先要熟悉它的兩個(gè)主要數(shù)據(jù)結(jié)構(gòu):Series和DataFrame。雖然它們并不能解決所有問題,但它們?yōu)榇蠖鄶?shù)應(yīng)用提供了一種可靠的、易于使用的基礎(chǔ)。

Series

Series的字符串表現(xiàn)形式為:索引在左,值在右。由于我們沒有為數(shù)據(jù)指定索引,于是會(huì)自動(dòng)創(chuàng)建一個(gè)0到N-1的整數(shù)型索引??梢酝ㄟ^values和index屬性來獲取其數(shù)組表示形式和索引對(duì)象:

Python

可以指定索引。與NumPy相比,你可以通過索引的方式選取Series中的單個(gè)或一組值:

Python

NumPy運(yùn)算(如根據(jù)布爾型數(shù)值進(jìn)行過濾,標(biāo)量乘法,應(yīng)用數(shù)學(xué)函數(shù)等)都會(huì)保留索引和值之間的連接:

Python

還可以將Series看成是一個(gè)定長(zhǎng)的有序字典,如果數(shù)據(jù)被存放在一個(gè)Python字典中,也可以通過這個(gè)字典來創(chuàng)建Series;如果只傳入一個(gè)字典,則結(jié)果Series中的索引就是原字典的健,也可以指定索引;Series對(duì)象本身及其索引都有一個(gè)name屬性,該屬性跟pandas其他的關(guān)鍵功能關(guān)系密切。

總結(jié):結(jié)合以上程序,放在Series里的可以有:列表;列表+索引;字典;字典+索引,一共四種。

pandas的isnull和notnull函數(shù)可以用于檢測(cè)缺失數(shù)據(jù)。也可以用Series的實(shí)例方法:例如:obj4.isnull()

DataFrame

DataFrame是一個(gè)表格型數(shù)據(jù)結(jié)構(gòu),含有一組有序的列,每列可以是不同的值類型(數(shù)值、字符串、布爾值等)。DataFrame既有行索引也有列索引,它可以被看作由Series組成的字典(和Series共用同一個(gè)索引)。其實(shí),DataFrame中的數(shù)據(jù)是以一個(gè)或多個(gè)二維塊存放的(而不是列表、字典或別的一維數(shù)組結(jié)構(gòu))。有關(guān)DataFrame內(nèi)部的技術(shù)細(xì)節(jié)遠(yuǎn)遠(yuǎn)超過本書所討論的范圍。

構(gòu)建DataFrame的辦法有很多,常用的一種是直接傳入一個(gè)由等長(zhǎng)列表或NumPy數(shù)組組成的字典

結(jié)果DataFrame會(huì)自動(dòng)加上索引(跟Series一樣),且全部列會(huì)被有序排列。

如果指定了列序列,則DataFrame的列就會(huì)按照指定順序進(jìn)行排列:(指定的列序列,必須在data字典里)

如果指定的列不在data字典里,就會(huì)變成NaN:

Python

通過類似字典標(biāo)記的方式和屬性的方式,可以將DataFrame的列獲取為一個(gè)Series

也可通過行索引字段ix來獲取各列

關(guān)鍵字del用于刪除列:

Python

可以輸入給DataFrame構(gòu)造器的數(shù)據(jù)有:

1、二維ndarray

2、由數(shù)組、列表或元組組成的字典

3、由Series組成的字典

4、由字典組成的字典

5、字典或Series的列表等等.....

Series一樣,都有index.name的屬性和columns.name的屬性;values屬性也會(huì)以二維ndarray形式返回DataFrame中的數(shù)據(jù);如果DataFrame各列的數(shù)據(jù)類型不同,則值數(shù)組的數(shù)據(jù)類型就會(huì)選用能兼容所有列的數(shù)據(jù)類型。