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