第七章,資料清洗與準備
一,處理缺失資料
對於數值資料,pandas使用浮點值nan表示缺失資料(哨兵值),可以使用pandas.isnull()方法檢測。常用的方法有dropna()對缺失資料進行過濾,fillna()用指定值或插值方法(ffill、bfill)填充缺失資料。
濾除缺失資料的辦法有很多種data.dropna()或者data[data[notnull()],dropna()會預設丟棄含有缺失值的行,也可以傳入引數how='all』丟棄全為na的那些行。如果要丟棄列只需要加入引數axis=1。除此之外,還可以傳入thresh引數留下一部分觀察資料。
填充缺失資料則使用pandas.fillna()方法,可以通過乙個字典呼叫fillna,實現對不同列填充不同的資料,fillna缺省會返回新物件,可以傳入引數inplace=true就地修改。關於fillna的其他引數,method則預設為ffill,limit則表示可以連續填充的最大數量。舉個例子,可以使用fillna()填充平均值,data.fillna(data.mean())。
二,資料轉換
移除重複的資料採用duplicated()方法,返回乙個布林型series,表示各行是否有重複值。除此之外,還有乙個drop_duplicates()方法,返回乙個已丟棄重複行的dataframe。drop_duplicates可以傳入指定列過濾重複項drop_duplicates([columns]),duplicated 和 drop_duplicates預設保留第乙個出現的值組合,可以傳入keep=『last』指定保留最後乙個值組合。
利用函式或對映進行資料轉換的方法主要有series的map()函式,主要接受乙個函式或者含有對映關係的字典型物件。
替換
利用fillna方法填充缺失資料是一種值替換的特殊情況,map則可以修改物件的資料子集,而replace方法則提供了更靈活、更簡單的方式。replace會產生乙個新的series,除非傳入inplace=true,就可以改變原資料。同時可以傳遞乙個替換列表或者字典讓每個值都有不同的替換值。
重新命名軸索引
跟series中的值⼀樣,軸標籤也可以通過函式或對映進⾏轉換,
從⽽得到⼀個新的不同標籤的物件。軸還可以被就地修改,⽽⽆
需新建⼀個資料結構。主要也是使用map方法,例如data.index.map(),如果要建立資料集的轉換版而不是直接修改原資料可以使用rename()方法,rename可以結合字典或者一些upper方法之類的對部分軸標籤進行更新。如果需要就地更改原資料,可以傳入引數inplace=true。
離散化和麵元化分
為了便於分析,連續資料常常被離散化或者拆分為面元(bin)。可以使用pandas的cut函式,會返回乙個特殊的categories物件,展示了pandas.cut劃分的面元。而返回的物件有codes和categories兩個屬性,codes返回乙個array表示原資料出現在面元的位置,而categories則返回劃分的面元。除此之外,可以使用value_counts(cut物件)計算pandas.cut結果的面元計數。同時,可以傳入labels引數設定自己的面元名稱。如果向面元傳入的是面元的數量而不是指定區間,則它會根據資料的最大值、最小值計算等長面元。
qcut則是乙個類似與cut的函式,它根據樣本分位數對資料進⾏⾯元劃,它返回的每個面元都含有相同數量的資料,而cut函式無法做到。你也可以傳遞自定義的分位數。
檢測和過濾異常值
過濾和檢測異常值很大程度就是運用陣列運算,假設你想找出某列中絕對值超過3的值:
col=data[2],
col[np.abs(col) > 3]
要選出全部含有超過3或-3的值可以用any方法:
data[(np.abs(data) > 3).any(1)]
也可以使用np.sign(data)將值限制在指定區間,np.sign(data)可以生成1, -1。
排列和隨機取樣
利用python.random.premutation函式可以對series或dataframe實現隨機排列。通過需要排列的軸的⻓度調⽤permutation,例如: premutation(5)。
sampler = np.random.permutation(5)
df.take(sampler)
也可以直接使用df,sampler(n)繼續隨機排序,如果要通過替換的方式產生樣本(允許重複選擇),可以傳遞replace=true到sample。
計算指標和啞變數
如果某一列中含有k個不同的值,則可以派生出乙個k列矩陣或dataframe(其值全為0和1),可以使用pandas.get_dummies函式實現該功能。
df = pd.dataframe()
pd.get_dummies(df['key'])
返回列名為key的三列六行的矩陣,出現的位置會顯示1沒出現的位置會以0代替。如果想為列加入乙個字首,可以使用prefix引數,例如:prefix=『key』。
字串操作
利用正規表示式,split(), join(),strip(), index(), find(), count(),replace()等方法進行資料處理,
利用python進行資料分析
目錄 10 minutes to pandas 翻譯 pandas中loc iloc ix的區別 pandas dropna函式 pandas中dataframe的stack unstack 和pivot 方法的對比 pandas中關於set index和reset index的用法 python匿...
利用python進行資料分析
利用python進行資料分析,需要了解一些基本的方法,比如掌握回歸分析的方法,通過線性回歸和邏輯回歸,其實你就可以對大多數的資料進行回歸分析,並得出相對精確地結論。這部分需要掌握的知識點如下 回歸分析 線性回歸 邏輯回歸 基本的分類演算法 決策樹 隨機森林 樸素貝葉斯 基本的聚類演算法 k mean...
《利用Python進行資料分析》筆記
之前的筆記一直記在我的印象筆記上,今天突然想到 不如直接記在部落格上,印象筆記只記錄生活上的事,這樣也分工明確一些。同時也能和大家分享,也許可以幫助到別人。由於這個學習筆記系列主要還是用於個人學習總結用,所以會比較凌亂,望大家理解!2017 9 23 p151 pd.dropna thresh 其中...