首頁(yè)技術(shù)文章正文

python庫(kù)pandas之5種使用技巧

更新時(shí)間:2017-11-14 來(lái)源:黑馬程序員 瀏覽量:

Python 正迅速成為數(shù)據(jù)科學(xué)家們更為鐘愛(ài)的編程語(yǔ)言。形成該現(xiàn)狀的理由非常充分:Python 提供了一種覆蓋范圍更為廣闊的編程語(yǔ)言生態(tài)系統(tǒng),以及具有一定計(jì)算深度且性能良好的科學(xué)計(jì)算庫(kù)。


在 Python 自帶的科學(xué)計(jì)算庫(kù)中,Pandas 模塊是最適于數(shù)據(jù)科學(xué)相關(guān)操作的工具。本文著重介紹了 Python 中數(shù)據(jù)處理的5種方法。


首先導(dǎo)入相關(guān)模塊并加載數(shù)據(jù)集到 Python 環(huán)境中:


import pandas as pd

import numpy as np

data = pd.read_csv("***.csv", index_col="Loan_ID")


1、Apply 函數(shù)


Apply 函數(shù)是處理數(shù)據(jù)和建立新變量的常用函數(shù)之一。在向數(shù)據(jù)框的每一行或每一列傳遞指定函數(shù)后,Apply 函數(shù)會(huì)返回相應(yīng)的值。這個(gè)由 Apply 傳入的函數(shù)可以是系統(tǒng)默認(rèn)的或者用戶自


def num_missing(x):

return sum(x.isnull())

#Applying per column:

print "Missing values per column:"

print data.apply(num_missing, axis=0)


2、填補(bǔ)缺失值


fillna() 函數(shù)可一次性完成填補(bǔ)功能。它可以利用所在列的均值/眾數(shù)/中位數(shù)來(lái)替換該列的缺失數(shù)據(jù)。下面利用“Gender”、“Married”、和“Self_Employed”列中各自的眾數(shù)值填補(bǔ)對(duì)應(yīng)列的缺失數(shù)據(jù)。


from scipy.stats import mode

mode(data['Gender'])


3、 數(shù)據(jù)透視表


Pandas 可建立 MS Excel 類型的數(shù)據(jù)透視表。例如在下文的代碼段里,關(guān)鍵列“LoanAmount” 存在缺失值。我們可以根據(jù)“Gender”,“Married”和“Self_Employed”分組后的平均金額來(lái)替換。 “LoanAmount”的各組均值可由如下方法確定


4、復(fù)合索引


如果您注意觀察#3計(jì)算的輸出內(nèi)容,會(huì)發(fā)現(xiàn)它有一個(gè)奇怪的性質(zhì)。即每個(gè)索引均由三個(gè)數(shù)值的組合構(gòu)成,稱為復(fù)合索引。它有助于運(yùn)算操作的快速進(jìn)行。


從#3的例子繼續(xù)開(kāi)始,已知每個(gè)分組數(shù)據(jù)值但還未進(jìn)行數(shù)據(jù)填補(bǔ)。具體的填補(bǔ)方式可結(jié)合此前學(xué)到的多個(gè)技巧來(lái)完成。


for i,row in data.loc[data['LoanAmount'].isnull(),:].iterrows():

ind = tuple([row['Gender'],row['Married'],row['Self_Employed']])

data.loc[i,'LoanAmount'] = impute_grps.loc[ind].values[0]

#Now check the #missing values again to confirm:

print data.apply(num_missing, axis=0)


5、Crosstab 函數(shù)


該函數(shù)用于獲取數(shù)據(jù)的初始印象(直觀視圖),從而驗(yàn)證一些基本假設(shè)。例如在本例中,“Credit_History”被認(rèn)為會(huì)顯著影響貸款狀態(tài)。這個(gè)假設(shè)可以通過(guò)如下代碼生成的交叉表進(jìn)行驗(yàn)證:


pd.crosstab(data["Credit_History"],data["Loan_Status"],margins=True)
友情提示:獲得更多學(xué)科學(xué)習(xí)視頻+資料+源碼,請(qǐng)加QQ:3276250747。


本文版權(quán)歸黑馬程序員人工智能+Python學(xué)院所有,歡迎轉(zhuǎn)載,轉(zhuǎn)載請(qǐng)注明作者出處。謝謝!


作者:黑馬程序員人工智能+Python培訓(xùn)學(xué)院


首發(fā):http://python.itheima.com/


分享到:
在線咨詢 我要報(bào)名
和我們?cè)诰€交談!