1. 程式人生 > >python資料分析pandas包入門學習(二)基本功能

python資料分析pandas包入門學習(二)基本功能

本文參考《利用Python進行資料分析》的第五章 pandas入門

2基本功能 介紹操作Series和DataFrame中的資料的基本手段。 重新索引reindex 當呼叫Series的reindex將會根據新索引進行重排;當某個索引值當前不存在,就引入缺失值;fill_value可以給缺失值賦值。

method選項:



對於DataFrame,reindex可以修改索引(行)、列,或者兩個都修改。如果只傳入一個序列,則會修改索引(行):

也可以使用ix()進行重新索引,比reindex更簡潔:


丟棄指定軸上的項drop()


索引、選取和過濾 兩種方式進行索引:普通的python切片&利用標籤切片
對Series進行索引:
注意:利用標籤切片運算與普通的Python切片運算不同,其末端是包含的: 對DataFrame進行索引就是獲取一個或多個列:
通過切片或布林型陣列選取行:
通過布林型DataFrame進行索引:
也可以通過ix從DataFrame中選取行和列的子集:
可以看到,pandas物件中的資料的選取和重排方式很多。下表簡單總結了針對DataFrame資料的選取和重排方式:

算術運算和資料對齊 pandas最重要的一個功能是,可以對不同索引的物件進行算術運算。
對DataFrame,同時發生在行和列上:
在算術方法中填充值 當索引無法配對時填充一個特殊值(如0)


類似的,在對Series和DataFrame重新索引時,也可以指定一個填充值:

DataFrame和Series之間的運算 先看一個二維陣列與其某行只差:
DataFrame和Series之間的運算也差不多:
如果某個索引值在DataFrame的列或Series的索引中找不到,則兩個物件會被重新索引成並集,並在沒有匹配的索引中插入NaN值
DataFrame列上的操作,加上axis=0: 函式應用和對映 numpy的nfuncs(元素級陣列方法)也可用於操作pandas物件:
一種常見的操作是,將函式應用到各列或行,得到一維陣列,可通過apply()方法實現:

除標量外,傳遞給apply的函式還可以返回由多個值組成的Series: 此外,元素級的PYTHON函式可是可用的,例如你想把frame中各個浮點值的格式化字串,可使用 applymap()方法:
應用於Series時則是map()方法:
排序和排名 sort_index():對行或列索引進行排序: 對於Series 對於DataFrame
對於DataFrame

預設為升序,通過如下設定,可降序排序: sort_index(by=):根據一個或多個列中的值進行排序:
order():Series按值排序,NaN預設被放到末尾
rank():排名,增設一個排名值,從1開始 預設情況下,並列的會分配一個平均值作為排名:

也可根據值在元資料中出現的順序給出排名:


使用降序,則加上ascending=False method選項:
對於DataFrame,則由axis來控制對行排名或列排名: 帶有重複值的軸索引 雖然許多Pandas的函式(如reindex)都要求標籤唯一,但也有索引不唯一的情況: 索引的is_unique屬性可以告訴你索引值是否唯一: 資料選取時,索引對應多個值,則返回一個Series;對應單個則返回一個標量:


對於DataFrame也一樣: