DataFrame是壹種表格型數據結構,它含有壹組有序的列,每列可以是不同的值。DataFrame既有行索引,也有列索引,它可以看作是由Series組成的字典,不過這些Series公用壹個索引。
DataFrame的創建有多種方式,不過最重要的還是根據dict進行創建,以及讀取csv或者txt文件來創建。這裏主要介紹這兩種方式。
根據字典創建
DataFrame的行索引是index,列索引是columns,我們可以在創建DataFrame時指定索引的值:
使用嵌套字典也可以創建DataFrame,此時外層字典的鍵作為列,內層鍵則作為索引:
我們可以用index,columns,values來訪問DataFrame的行索引,列索引以及數據值,數據值返回的是壹個二維的ndarray
讀取文件
讀取文件生成DataFrame最常用的是read_csv,read_table方法。該方法中幾個重要的參數如下所示:
其他創建DataFrame的方式有很多,比如我們可以通過讀取mysql或者mongoDB來生成,也可以讀取json文件等等,這裏就不再介紹。
在DataFrame的處理中經常會遇到軸的概念,這裏先給大家壹個直觀的印象,我們所說的axis=0即表示沿著每壹列或行標簽\索引值向下執行方法,axis=1即表示沿著每壹行或者列標簽模向執行對應的方法。
索引、切片
我們可以根據列名來選取壹列,返回壹個Series:
我們還可以選取多列或者多行:
當然,在選取數據的時候,我們還可以根據邏輯條件來選取:
pandas提供了專門的用於索引DataFrame的方法,即使用ix方法進行索引,不過ix在最新的版本中已經被廢棄了,如果要是用標簽,最好使用loc方法,如果使用下標,最好使用iloc方法:
修改數據
可以使用壹個標量修改DataFrame中的某壹列,此時這個標量會廣播到DataFrame的每壹行上:
也可以使用壹個列表來修改,不過要保證列表的長度與DataFrame長度相同:
可以使用壹個Series,此時會根據索引進行精確匹配:
重新索引
使用reindex方法對DataFrame進行重新索引。對DataFrame進行重新索引,可以重新索引行,列或者兩個都修改,如果只傳入壹個參數,則會從新索引行:
填充數據只能按行填充,此時只能對行進行重新索引:
丟棄指定軸上的值
可以使用drop方法丟棄指定軸上的值,不會對原DataFrame產生影響
算術運算
DataFrame在進行算術運算時會進行補齊,在不重疊的部分補足NA:
可以使用fill_value方法填充NA數據,不過兩個df中都為NA的數據,該方法不會填充:
函數應用和映射
numpy的元素級數組方法,也可以用於操作Pandas對象:
另壹個常見的操作是,將函數應用到由各列或行所形成的壹維數組上。DataFrame的apply方法即可實現此功能。
元素級的Python函數也是可以用的,使用applymap方法:
排序和排名
對於DataFrame,sort_index可以根據任意軸的索引進行排序,並指定升序降序
DataFrame也可以按照值進行排序:
匯總和計算描述統計
DataFrame中的實現了sum、mean、max等方法,我們可以指定進行匯總統計的軸,同時,也可以使用describe函數查看基本所有的統計項:
DataFrame也實現了corr和cov方法來計算壹個DataFrame的相關系數矩陣和協方差矩陣,同時DataFrame也可以與Series求解相關系數。
處理缺失數據
Pandas中缺失值相關的方法主要有以下三個:
isnull方法用於判斷數據是否為空數據;
fillna方法用於填補缺失數據;
dropna方法用於舍棄缺失數據。
上面兩個方法返回壹個新的Series或者DataFrame,對原數據沒有影響,如果想在原數據上進行直接修改,使用inplace參數:
對DataFrame來說,dropna方法如果發現缺失值,就會進行整行刪除,不過可以指定刪除的方式,how=all,是當整行全是na的時候才進行刪除,同時還可以指定刪除的軸。
DataFrame填充缺失值可以統壹填充,也可以按列填充,或者指定壹種填充方式: