陳新龍
我們可以在一些面向白領(lǐng)的編程培訓(xùn)廣告中看到,僅用幾節(jié)課學(xué)會Python之后,五分鐘就可以把領(lǐng)導(dǎo)分派的幾百張Excel表格處理完畢,這就是利用了Python的數(shù)據(jù)分析功能……
一、 數(shù)據(jù)分析簡介
數(shù)據(jù)分析是指用適當(dāng)?shù)慕y(tǒng)計分析方法對收集來的大量數(shù)據(jù)進行分析,將它們加以匯總和理解并消化,以求最大化地開發(fā)數(shù)據(jù)的功能,發(fā)揮數(shù)據(jù)的作用。數(shù)據(jù)分析是為了提取有用信息和形成結(jié)論而對數(shù)據(jù)加以詳細(xì)研究和概括總結(jié)的過程。
而Python能成為受歡迎的編程語言最主要的原因是它的簡單易學(xué)。與其他語言相比,Python的語法很簡單,幾天就可以掌握它的基礎(chǔ)知識。即使在學(xué)習(xí)其他語言(例如C++、Java)之后,開發(fā)者通常還是更喜歡使用Python。因為Python庫幾乎可以滿足所有開發(fā)需求。所以,庫和簡單的語法讓使用Python進行開發(fā)既簡單又高效,也讓其成為適合初學(xué)者的語言。
我們也要跟隨著知識潮流的腳步,電腦報也會逐步和大家分享一些數(shù)據(jù)分析的技巧,在基本掌握Python后將其應(yīng)用到實際工作中解放自己的生產(chǎn)力。
在學(xué)好Python的基礎(chǔ)知識后,初學(xué)數(shù)據(jù)分析可以使用兩款開發(fā)工具Pycharm或Jupyter Notebook。大致上從數(shù)據(jù)類型開始學(xué)習(xí),深入到數(shù)據(jù)處理分析,再到圖形輸出。每一部分都有很多知識點,希望能在未來的日子里和大家一起學(xué)習(xí)進步。
今天就通過實例體會一下數(shù)據(jù)分析的簡單過程吧。下面我們根據(jù)班級學(xué)生基本情況表來分析班級中的男女生比例,并畫出餅圖來。雖然例子只處理了一張簡單的表格,但是當(dāng)我們使用Python作為數(shù)據(jù)分析工具時,就可以快速處理大量的表格和數(shù)據(jù)(圖1)。
二、 開發(fā)工具簡介
Pycharm和Jupyter Notebook是我們用來編寫數(shù)據(jù)分析程序的常用開發(fā)工具,兩者各有優(yōu)勢。
Pycharm是一款功能強大的Python開發(fā)環(huán)境,有大量的庫為數(shù)據(jù)分析和處理提供了完整的工具集,但在使用過程中,需要手動安裝需要的庫。在用于數(shù)據(jù)分析時Pycharm更全能,采用了更具創(chuàng)新性的實現(xiàn)算法,還能和其他語言對接,例如與C語言對接彌補Python運行效率不高的問題。
Jupyter Notebook是基于網(wǎng)頁的用于交互計算的應(yīng)用程序,它是一個性能強大的終端可以在網(wǎng)頁中直接編寫和運行代碼(可以寫一行代碼,執(zhí)行一行,運行結(jié)果直接在代碼塊下顯示)。這個集文本、代碼、圖像、公式展現(xiàn)于一體的超級Python Web界面,可以幫助我們學(xué)習(xí)和調(diào)試代碼。而且已經(jīng)集成了大量的庫,用起來非常方便。
三、 數(shù)據(jù)分析處理
1. 環(huán)境安裝
本例我們在Jupyter Notebook上實操。
Jupyter Notebook的安裝網(wǎng)上已有不少教程,不再贅述,附上安裝教程鏈接:
https://blog.csdn.net/yu1014745867/article/
details/84191485
2. 導(dǎo)入庫
在數(shù)據(jù)分析中,我們需要不同庫的幫助。選擇數(shù)據(jù)路徑,對數(shù)據(jù)預(yù)處理、清洗、分析,最后繪制圖表……本次Python實例中需要用到以下函數(shù)庫。
Numpy庫:用來實現(xiàn)科學(xué)計算,包括計算數(shù)組、一些隨機的函數(shù)……對文件中的數(shù)據(jù)進行處理。
Pandas庫:提供大量能使我們快速便捷地處理數(shù)據(jù)的函數(shù)與方法,比如導(dǎo)入文件、提取文件……
OS庫:提供了豐富的方法用來處理文件和目錄,包括一些修改文件的目錄……
由于我們已經(jīng)安裝好了Jupyter Notebook,這些需要函數(shù)庫直接導(dǎo)入就可以使用了(如圖2)。在Jupyter Notebook分段輸入部分代碼就可以直接運行查看效果,特別適合我們學(xué)習(xí)。
3. 導(dǎo)入數(shù)據(jù)表
導(dǎo)入成功后便可以利用os函數(shù)定位到文件所指定的位置“F:\\數(shù)據(jù)分析表”,數(shù)據(jù)表格放在這個目錄下(如圖3)。
隨后我們用pandas將所需的數(shù)據(jù)從表格文件中調(diào)取出來,我們采用的數(shù)據(jù)是一張班級成員信息表(表格中個人隱私有打碼)(如圖4)。
由于數(shù)據(jù)量較大,我們只需要使用“data1[:5]”提取前面五行的內(nèi)容便于觀察數(shù)據(jù)格式和內(nèi)容。
4. 數(shù)據(jù)清洗
觀察數(shù)據(jù)后發(fā)現(xiàn)并沒有性別這一項內(nèi)容,但是數(shù)據(jù)中存在著身份證號一項,可以利用數(shù)據(jù)清洗整理提取身份證倒數(shù)第二位數(shù)字的奇偶性來判斷性別。首先增加一個列表用來存放性別,其次定義male和female兩個變量分別代表男和女, 利用循環(huán)提取出所有的身份證號,然后再去尋找出倒數(shù)第二位的數(shù)字(注意Python是左開右閉的這個知識點)然后利用判斷語句判斷倒數(shù)第二個數(shù)和2的余數(shù)是否等于0,如果余數(shù)等于0代表女,否則代表男(如圖5)。
將男女的性別添加到列表中。之后再使用“data1[:5]”,我們可以看到已經(jīng)多出了性別這一列(如圖6)。
數(shù)據(jù)清洗簡單說就是把數(shù)據(jù)中的污染“洗掉”,指發(fā)現(xiàn)并糾正數(shù)據(jù)文件中可識別的錯誤,包括檢查數(shù)據(jù)一致性、處理無效值和缺失值等。這是數(shù)據(jù)分析的難點,需要針對具體情況提出相應(yīng)的解決方案。
5. 繪制圖表
根據(jù)已經(jīng)處理過的數(shù)據(jù)就可以統(tǒng)計male和female的人數(shù),根據(jù)這兩個數(shù)值就可以算出對應(yīng)的比例。然后用餅圖的方式繪制出來(圖7)。
Python繪制圖形需要用到Python Matplotlib.pyplot庫。Matplotlib庫是一個面向?qū)ο蟮睦L圖庫。繪圖界面由pyplot模塊提供。該模塊提供了許多繪圖函數(shù),男女比例可以用餅圖來直觀顯示,餅圖利用plt.pie的方法,設(shè)置繪制所需要的參數(shù),包括數(shù)據(jù)值、區(qū)間的內(nèi)容、顯示字符的距離、區(qū)間顯示的顏色、百分比……都需要一一設(shè)置好。由于圖形的參數(shù)設(shè)置繁雜,這里就不一一詳述了,你可以根據(jù)參數(shù)表自行查看使用(圖8)。
掌握數(shù)據(jù)分析是一項非常實用的技能,要想學(xué)好還需要提前打好一定的數(shù)學(xué)和編程基礎(chǔ),本實例只是拋磚引玉告訴你Python可以幫你快速處理數(shù)據(jù),今后我們也會繼續(xù)介紹一些均值、方差的計算實例,希望能夠?qū)δ兴鶐椭?/p>