Python正迅速成為數(shù)據(jù)科學(xué)家們更為鐘愛的編程語言。形成該現(xiàn)狀的理由非常充分:Python提供了一種覆蓋范圍更為廣闊的編程語言生態(tài)系統(tǒng),以及具有一定計算深度且性能良好的科學(xué)計算庫。
在Python自帶的科學(xué)計算庫中,Pandas模塊是最適于數(shù)據(jù)科學(xué)相關(guān)操作的工具。本文著重介紹了Python中數(shù)據(jù)處理的5種方法。
首先導(dǎo)入相關(guān)模塊并加載數(shù)據(jù)集到Python環(huán)境中:
importpandasaspd
importnumpyasnp
data=pd.read_csv("***.csv",index_col="Loan_ID")
1、Apply函數(shù)
Apply函數(shù)是處理數(shù)據(jù)和建立新變量的常用函數(shù)之一。在向數(shù)據(jù)框的每一行或每一列傳遞指定函數(shù)后,Apply函數(shù)會返回相應(yīng)的值。這個由Apply傳入的函數(shù)可以是系統(tǒng)默認(rèn)的或者用戶自
defnum_missing(x):
returnsum(x.isnull())
#Applyingpercolumn:
print"Missingvaluespercolumn:"
printdata.apply(num_missing,axis=0)
2、填補缺失值
fillna()函數(shù)可一次性完成填補功能。它可以利用所在列的均值/眾數(shù)/中位數(shù)來替換該列的缺失數(shù)據(jù)。下面利用“Gender”、“Married”、和“Self_Employed”列中各自的眾數(shù)值填補對應(yīng)列的缺失數(shù)據(jù)。
fromscipy.statsimportmode
mode(data['Gender'])
3、數(shù)據(jù)透視表
Pandas可建立MSExcel類型的數(shù)據(jù)透視表。例如在下文的代碼段里,關(guān)鍵列“LoanAmount”存在缺失值。我們可以根據(jù)“Gender”,“Married”和“Self_Employed”分組后的平均金額來替換。“LoanAmount”的各組均值可由如下方法確定
4、復(fù)合索引
如果您注意觀察#3計算的輸出內(nèi)容,會發(fā)現(xiàn)它有一個奇怪的性質(zhì)。即每個索引均由三個數(shù)值的組合構(gòu)成,稱為復(fù)合索引。它有助于運算操作的快速進行。
從#3的例子繼續(xù)開始,已知每個分組數(shù)據(jù)值但還未進行數(shù)據(jù)填補。具體的填補方式可結(jié)合此前學(xué)到的多個技巧來完成。
fori,rowindata.loc[data['LoanAmount'].isnull(),:].iterrows():
ind=tuple([row['Gender'],row['Married'],row['Self_Employed']])
data.loc[i,'LoanAmount']=impute_grps.loc[ind].values[0]
#Nowcheckthe#missingvaluesagaintoconfirm:
printdata.apply(num_missing,axis=0)
5、Crosstab函數(shù)
該函數(shù)用于獲取數(shù)據(jù)的初始印象(直觀視圖),從而驗證一些基本假設(shè)。例如在本例中,“Credit_History”被認(rèn)為會顯著影響貸款狀態(tài)。這個假設(shè)可以通過如下代碼生成的交叉表進行驗證:
pd.crosstab(data["Credit_History"],data["Loan_Status"],margins=True)