馮艷茹

摘要:Python語言簡潔,易學,具有豐富的標準庫和第三方庫,它不僅在快速開發應用程序上顯示出極高的開發效率,而且在大數據、人工智能等數據科學領域得到了極大的應用。該文重點闡述了Python語言和數據分析的關系以及Python語言是如何實現數據分析的。
關鍵詞:數據分析;大數據;Python;Matplotlib
中圖分類號:G642 ? ? ? ?文獻標識碼:A
文章編號:1009-3044(2020)24-0072-02
隨著計算機技術的發展以及科技的進步,各行各業每天都在產生和收集大量的數據,21世紀已經進入了大數據時代。在當前的大數據時代背景下,各個領域的發展都離不開數據的分析,決策將更加依賴于數據和分析,而并非基于經驗和直覺。數據分析是大數據領域不可缺少的環節。數據分析是指使用適當的統計分析方法對收集來的大量數據進行分析,并從中提取有用信息并形成結論。數據分析的任務就是從海量無序的大量數據中找到有價值的數據,給數據賦予新的意義,并為決策者提供參考[1]。Python是數據分析的撒手锏。2017年Python語言超越其他編程語言,成了年度最受歡迎的編程語言,受到了眾多編程人員的青睞。Python具有豐富的庫,在快速開發時展現出非常大的優勢,在數據分析、數據科學、人工智能等學習工作中都不可避免地使用Python,成為繼C++和Java之后的第三大語言。
1 Python語言及特點
Python 語言是一種使用廣泛、跨平臺的高級程序設計語言,由荷蘭數學家Guido Van Rossum設計創造[4]。Python的設計哲學強調代碼的可讀性和簡潔的語言,相比于C++或Java,Python能夠用更少的代碼表達想法。自1991公開發布第一個版本至今,Python經過了多次變革并增加了許多新特性,更加簡潔規范,它已被廣泛應用于系統管理任務的處理和web編程。Python語言具有以下特點:
1)簡單易學
相比其他編程語言(比如 C語言),Python代碼非常簡單,上手容易,非常適合初學者。比如我們要完成某個功能,Python的代碼量可能是C語言的十分之一,如果使用Python來寫程序,其工作效率會顯著提高,這是 Python具有巨大吸引力的一大特點。
2)面向對象
Python中的一切皆是對象。既支持面向過程編程,也支持面向對象編程。程序是由數據和功能組合而成的對象構建起來的。與其他主要的語言如C++和Java相比,Python以一種非常強大又簡單的方式實現面向對象編程。
3)可移植性
Python程序可以在多個平臺上運行,這些平臺包括Linux、Windows、Android平臺等,只需為平臺提供了相應的Python解釋器。
大部分語言為編譯型或解釋型,如C/C++等為編譯型,python為解釋型語言。C源文件通過預處理、編譯、匯編、鏈接,最終機器執行目標代碼(二進制)。而Python則通過解釋器把源代碼轉換成稱為字節碼的中間形式,Python虛擬機用解釋的方式執行代碼。
4)豐富的庫
Python標準庫確實很龐大,它可以幫助你處理各種工作,包括正則表達式、數據庫、網頁瀏覽器、XML、XML-RPC、HTML、WAV文件、密碼系統、GUI(圖形用戶界面)Tk和其他與系統有關的操作。除了標準庫以外,還有許多其他高質量的庫,如 wXPython、Twisted和Python圖像庫等。
5)規范的代碼
Python采用強制縮進的方式使得代碼具有很好的可讀性。
2 Python和數據分析
在數據分析和數據挖掘領域,Python、R語言和SAS等都是非常受歡迎的編程工具。Python和R語言都是開源的,普遍應用于互聯網行業,而SAS為商業付費軟件,堪稱金融和醫療行業的標準工具。數據分析需要和數據進行大量的交互、探索性計算以及數據結果的可視化等[2]。Python有越來越多的第三方庫可供使用,目前已有超過15萬個的第三方包。相比于R語言、SPSS等語言,Python具有適合大數據分析的第三方庫,比如Numpy、Pandas、Matplotlib 、Scipy、scikit-learn等可以實現數據統計、數據的可視化等功能,從而可以完成不同的數據分析任務。
2.1 Numpy庫——數據分析基礎工具
Numpy是一個科學計算庫,是Python處理數組和矢量運算的工具包,是進行高性能計算和數據分析的基礎。Numpy對于矢量運算不僅提供了很多方便的接口,而且其效率比用戶手動使用Python語言實現數組運算要更高。雖然Numpy庫本身沒有提供很多高級的數據分析功能,但是學習和使用Numpy庫將有助于數據分析工具的使用。
2.2 Pandas庫——數據分析專用庫
Pandas是一個構建在Numpy之上的高性能數據分析庫,它能夠對數據進行排序、分組、歸并等操作,也能夠求和、求極值、求標準方差等統計計算。Pandas是數據分析的專用庫,用來處理結構化的數據。數據分析的第一步是要從外部獲取數據,Pandas提供了多種I/O API函數,可以讀取csv、txt等文件,也可以讀取xlsx或 SQL Server數據文件等多種類型的文件,如表1所示。
2.3 Matplotlib庫——數據可視化工具
Matplotlib是Python最著名的繪圖庫之一,Matplotlib配合Numpy模塊利用,可以實現科學計算結果的可視化顯示,所以Matplotlib是Python進行數據分析的一個非常重要的可視化工具。使用Matplotlib模塊繪圖主要用的是Matplotlib的plot工具包,該工具包提供了與MATLAB類似的繪圖API,封裝了復雜的繪圖對象結構,用戶只需調用pyplot模塊所提供的函數,使用少量的代碼就可以快速繪制出高質量的直方圖、散點圖、柱形圖等二維或三維圖形。直方圖能夠直觀地反映出數據的體態特征[3],圖1 隨機生產滿足mu為100、sigma為20的正態分布的10萬個智商數據的直方圖。
3 scikit-learn實現數據分析
scikit-learn是一個構建在Numpy、Scipy、Matplotlib之上的機器學習庫,所支持的算法、模型均是經過廣泛驗證的,涵蓋了分類、回歸、聚類三個大類,還提供了數據降維、模型選擇與數據預處理等[2]。下面說明如何使用scikit-learn實現Logistic回歸的基本過程。
3.1算法設計
Logistic回歸是一種廣義的線性分析模型,實質上是以回歸的形式解決分類問題的。假設特征向量x有n個屬性值x=(x1,x2,…,xn),線性分析模型由各個屬性的線性組合得到預測函數,即:
f(x)=w1x1+w2x2+…+wnxn+b
表示成向量的形式,即:
f(x)=wTx +b
其中,w是權重,b是偏值。線性模型的算法則為w和b的學習。線性回歸的任務就是通過訓練集來學習和得到w和b。使得對訓練集的預測值和真實的回歸目標值之間的均方誤差最小。
對于給定的樣例數據點(x,y),若線性模型對給定樣本點的預測值f(x)接近于真實值y,就形成了線性回歸模型。即:
y=wTx +b
線性回歸模型表征了輸入x與輸出y之間的一種線性關系。
3.2使用sklearn自帶的iris數據集進行訓練和預測
如果沒有安裝Python科學計算包,建議使用安裝和使用Anaconda。Anaconda是一款非常優秀的Python集成開發環境,集成了近200個數據科學相關的第三方包,用于大規模數據處理、預測分析和科學計算的Python發行版,還可以在它上面構建人工智能的開發環境。下載地址如下:
https://www. anaconda.com/download/
本文中的代碼均在Anaconda下調試通過。
1)導入所需要的模塊
#導入numpy模塊
import numpy as np ?#np是numpy的別名
#導入sklearn中的linear_model和datasets模塊
from sklearn import linear_model,datasets
2)導入數據,并將數據切分為訓練集和測試集
Sklearn提供了從樣本數據中創建訓練數據和測試數據的方法。自帶了一些案例數據,它位于Python安裝目錄下\lib\site-package\sklearn\datasets子目錄下,為這些數據提供了專門的訪問接口。
#創建數據
iris=datasets.load_iris()
X=iris.data
y=iris.target
X_train,X_test,y_train,y_test=train_test_split(X,y,random_state=1)
3)選擇模型,進行訓練和預測
scikit-learn中的Logistic回歸在sklearn的Linear_model模塊中的LogisticRegression類中實現的,主要是實現二分類的問題。
log_reg=linear_model. LogisticRegression()
lr=log_reg.fit(X_train,y_train)
log_reg.predict(X_test)
說明:scikit-learn總是把從訓練集數據中得到的值保存在以下劃線結束的屬性中,這是為了將其與用戶設置的參數區分開來。w(權重或系數)被保存在coef_屬性中,而b(偏移)被保存在intercept_屬性中。
4 結束語
綜上分析,Python語法簡潔而清晰,具有豐富和強大的類庫。Python可以說是無所不能,廣泛應用于web編程、爬蟲、人工智能等,同時它能夠很方便地和其他語言制作的模塊輕松地融合在一起,所以又被俗稱為“膠水語言”。使用python進行數據分析是十分便利且高效,因此它被認為是非常優秀的數據分析工具。
參考文獻:
[1] 陳紅波,劉順祥.數據分析從入門到進階[M].北京:機械工業出版社,2019.
[2] 呂云翔,李伊琳,王肇一.Python數據分析實戰[M].北京:清華大學出版社,2019.
[3] 江紅,余青松.Python程序設計與算法基礎教程[M].北京:清華大學出版社,2019.
[4] 徐玉芳,蘇斌.Python語言特點及其在機器學習中的應用[J].計算機產品與流通,2019(12):142.
【通聯編輯:王力】