轉(zhuǎn)帖|使用教程|編輯:龔雪|2017-05-09 16:47:15.000|閱讀 612 次
概述:我們?cè)赑ython數(shù)據(jù)分析之pandas學(xué)習(xí)(二)中已經(jīng)介紹到了第五部分的利用pandas實(shí)現(xiàn)SQL操作,我們接著往下講pandas模塊中缺失值處理、數(shù)據(jù)透視表、多層索引的引用等其他知識(shí)點(diǎn)。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
有關(guān)pandas模塊的學(xué)習(xí)與應(yīng)用主要介紹以下8個(gè)部分:
1、數(shù)據(jù)結(jié)構(gòu)簡(jiǎn)介:DataFrame和Series
2、數(shù)據(jù)索引index
3、利用pandas查詢數(shù)據(jù)
4、利用pandas的DataFrames進(jìn)行統(tǒng)計(jì)分析
5、利用pandas實(shí)現(xiàn)SQL操作
6、利用pandas進(jìn)行缺失值的處理
7、利用pandas實(shí)現(xiàn)Excel的數(shù)據(jù)透視表功能
8、多層索引的使用
我們?cè)谥幸呀?jīng)介紹到了第五部分的利用pandas實(shí)現(xiàn)SQL操作,我們接著往下講pandas模塊中的其他的知識(shí)點(diǎn)。
現(xiàn)實(shí)生活中的數(shù)據(jù)是非常雜亂的,其中缺失值也是非常常見的,對(duì)于缺失值的存在可能會(huì)影響到后期的數(shù)據(jù)分析或挖掘工作,那么我們?cè)撊绾翁幚磉@些缺失值呢?常用的有三大類方法,即刪除法、填補(bǔ)法和插值法。
刪除法:當(dāng)數(shù)據(jù)中的某個(gè)變量大部分值都是缺失值,可以考慮刪除改變量;當(dāng)缺失值是隨機(jī)分布的,且缺失的數(shù)量并不是很多是,也可以刪除這些缺失的觀測(cè)。
替補(bǔ)法:對(duì)于連續(xù)型變量,如果變量的分布近似或就是正態(tài)分布的話,可以用均值替代那些缺失值;如果變量是有偏的,可以使用中位數(shù)來(lái)代替那些缺失值;對(duì)于離散型變量,我們一般用眾數(shù)去替換那些存在缺失的觀測(cè)。
插補(bǔ)法:插補(bǔ)法是基于蒙特卡洛模擬法,結(jié)合線性模型、廣義線性模型、決策樹等方法計(jì)算出來(lái)的預(yù)測(cè)值替換缺失值。
我們這里就介紹簡(jiǎn)單的刪除法和替補(bǔ)法:
這是一組含有缺失值的序列,我們可以結(jié)合sum函數(shù)和isnull函數(shù)來(lái)檢測(cè)數(shù)據(jù)中含有多少缺失值:
1.In [130]: sum(pd.isnull(s)) 2.Out[130]: 9
直接刪除缺失值
默認(rèn)情況下,dropna會(huì)刪除任何含有缺失值的行,我們?cè)贅?gòu)造一個(gè)數(shù)據(jù)框試試:
返回結(jié)果表明,數(shù)據(jù)中只要含有缺失值NaN,該數(shù)據(jù)行就會(huì)被刪除,如果使用參數(shù)how=’all’,則表明只刪除所有行為缺失值的觀測(cè)。
使用一個(gè)常量來(lái)填補(bǔ)缺失值,可以使用fillna函數(shù)實(shí)現(xiàn)簡(jiǎn)單的填補(bǔ)工作:
在Excel中有一個(gè)非常強(qiáng)大的功能就是數(shù)據(jù)透視表,通過托拉拽的方式可以迅速的查看數(shù)據(jù)的聚合情況,這里的聚合可以是計(jì)數(shù)、求和、均值、標(biāo)準(zhǔn)差等。
pandas為我們提供了非常強(qiáng)大的函數(shù)pivot_table(),該函數(shù)就是實(shí)現(xiàn)數(shù)據(jù)透視表功能的。對(duì)于上面所說(shuō)的一些聚合函數(shù),可以通過參數(shù)aggfunc設(shè)定。我們先看看這個(gè)函數(shù)的語(yǔ)法和參數(shù)吧:
1.pivot_table(data,values=None, 2.index=None, 3.columns=None, 4.aggfunc='mean', 5.fill_value=None, 6.margins=False, 7.dropna=True, 8.margins_name='All') 9.data:需要進(jìn)行數(shù)據(jù)透視表操作的數(shù)據(jù)框 10.values:指定需要聚合的字段 11.index:指定某些原始變量作為行索引 12.columns:指定哪些離散的分組變量 13.aggfunc:指定相應(yīng)的聚合函數(shù) 14.fill_value:使用一個(gè)常數(shù)替代缺失值,默認(rèn)不替換 15.margins:是否進(jìn)行行或列的匯總,默認(rèn)不匯總 16.dropna:默認(rèn)所有觀測(cè)為缺失的列 17.margins_name:默認(rèn)行匯總或列匯總的名稱為'All'
我們?nèi)匀灰詓tudent表為例,來(lái)認(rèn)識(shí)一下數(shù)據(jù)透視表pivot_table函數(shù)的用法:
對(duì)一個(gè)分組變量(Sex),一個(gè)數(shù)值變量(Height)作統(tǒng)計(jì)匯總
對(duì)一個(gè)分組變量(Sex),兩個(gè)數(shù)值變量(Height,Weight)作統(tǒng)計(jì)匯總
對(duì)兩個(gè)分組變量(Sex,Age),兩個(gè)數(shù)值變量(Height,Weight)作統(tǒng)計(jì)匯總
很顯然這樣的結(jié)果并不像Excel中預(yù)期的那樣,該如何變成列聯(lián)表的形式的?很簡(jiǎn)單,只需將結(jié)果進(jìn)行非堆疊操作(unstack)即可:
看,這樣的結(jié)果是不是比上面那種看起來(lái)更舒服一點(diǎn)?
使用多個(gè)聚合函數(shù)
有關(guān)更多數(shù)據(jù)透視表的操作,可參考一文
最后我們?cè)賮?lái)講講pandas中的一個(gè)重要功能,那就是多層索引。在序列中它可以實(shí)現(xiàn)在一個(gè)軸上擁有多個(gè)索引,就類似于Excel中常見的這種形式:
對(duì)于這樣的數(shù)據(jù)格式有什么好處呢?pandas可以幫我們實(shí)現(xiàn)用低維度形式處理高維數(shù)數(shù)據(jù),這里舉個(gè)例子也許你就能明白了:
對(duì)于這種多層次索引的序列,取數(shù)據(jù)就顯得非常簡(jiǎn)單了:
對(duì)于這種多層次索引的序列,我們還可以非常方便的將其轉(zhuǎn)換為數(shù)據(jù)框的形式:
以上針對(duì)的是序列的多層次索引,數(shù)據(jù)框也同樣有多層次的索引,而且每條軸上都可以有這樣的索引,就類似于Excel中常見的這種形式:
我們不妨構(gòu)造一個(gè)類似的高維數(shù)據(jù)框:
同樣,數(shù)據(jù)框中的多層索引也可以非常便捷的取出大塊數(shù)據(jù):
在數(shù)據(jù)框中使用多層索引,可以將整個(gè)數(shù)據(jù)集控制在二維表結(jié)構(gòu)中,這對(duì)于數(shù)據(jù)重塑和基于分組的操作(如數(shù)據(jù)透視表的生成)比較有幫助。
就拿student二維數(shù)據(jù)框?yàn)槔覀儤?gòu)造一個(gè)多層索引數(shù)據(jù)集:
講到這里,我們關(guān)于pandas模塊的學(xué)習(xí)基本完成,其實(shí)在掌握了pandas這8個(gè)主要的應(yīng)用方法就可以靈活的解決很多工作中的數(shù)據(jù)處理、統(tǒng)計(jì)分析等任務(wù)。有關(guān)更多的pandas介紹,可參考pandas官方文檔:
強(qiáng)烈推薦《Python數(shù)據(jù)分析》和《利用Python進(jìn)行數(shù)據(jù)分析》兩本書,書中詳細(xì)講解了如何使用numpy、pandas、scipy、matplotlib等模塊進(jìn)行數(shù)據(jù)分析,目前我也正在使用這兩本參考書,感興趣的朋友可以一起學(xué)習(xí),共同進(jìn)步。學(xué)習(xí)任何一門計(jì)算機(jī)語(yǔ)言都需要你不斷的思考和敲擊鍵盤,每天進(jìn)步一點(diǎn)點(diǎn),你會(huì)感謝一年前努力的自己!
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn