python入門總結(資料分析方向)

kuqlan發表於2019-09-01

 隨著Python自身功能的完善以及生態系統的擴充套件,Python在Web開發、網路爬蟲、資料分析與資料探勘、人工智慧等應用方面逐漸嶄露頭角。回顧phthon演變史,主要如下介個階段:

1、Django和Flask引領的WEB開發模式

2、網路爬蟲

3、自動化運維

4、資料分析與科學計算

作為資料庫出身,本人學習以資料分析和挖掘為方向為主,因此接下來圍繞這些內容進行簡要總結。2008年釋出的Numpy、scipy和2009年釋出的pandas是資料分析與科學計算的三劍客。因此在這次學習過程中,我圍繞資料分析方向經常用到的有Numpy、pandas、sklearn工具包為主進行學習測試。

 

一、安裝環境

      自學要從 python3 開始,安裝環境建議使用 Anaconda ,關於anaconda的可以看看這篇文章: Anaconda 完全入門指南 來自 https://www.jianshu.com/p/eaee1fadc1e9 >

      雖然有功能強大的 PyCharm 開發工具,在入門階段還是建議使用 anacond a 環境,尤其其中的 Spyder 圖形開發介面,適合初學者載入各種包和檢視變數值等。   

 

二、python語法基礎

      python 是採用弱變數機制,也就是說變數型別不用明確指定。 python 中的資料型別不多,有元組( tuple )、列表( list )、字典等。某種資料型別是指具體型別和該型別資料的操作集合,比如,元組用圓括號,可以做建立、查詢等,但不能修改。 List 用中括號表示,能修改,類似一維陣列。不過 list 也可包含二元元組(或更多元元組)等,還有實現了分支和流程控制的 for /w hile lambd 函式等。

       資料分析和挖掘,僅僅 python 基本語法還不夠,因此後來有了 Numpy scipy 包,主要用於處理以為陣列( Ndarry )和各類資料計算。為什麼陣列的處理呢,因為學習機器學習的時候我們會發現矩陣是模式識別或相似度分析的基礎,矩陣實際上就是多維陣列,所以免不了陣列的計算。

 

三、python資料分析

       現實世界不那麼簡單,因此後來又有了 pandas ,主要用於表格類資料(實際上也是矩陣)處理的 Datafram 和序列資料的 Series ,通過 pndas 的各類操作方法,資料分析初期的資料清洗和預處理工作基本能完成。如果你是資料庫很熟,前期資料處理(資料倉儲)都能用 SQL 來處理,那 pandas 也是可以跳過去,但是學了 pandas 後我們會發現,有些資料處理操作比 SQL 還高效易用,因此還是需要學習。 pandas Datafram 對應於資料庫中表或 Exell 上的表格。通過 pandas 我們後續會合並、排序特需的資料集。也能進行基本統計、分組、分佈、交叉、相關分析等。

       當然,這些分析離不開資料匯入匯出功能的實現,根據個人經驗,這些匯入匯出和各類資料庫連結等,python裡實現起來還是比較順利輕鬆,Excell、CVS、文字、mysql等的連結匯入匯出測試一般一次就能成功。對Oracle資料庫的連結,因本地電腦需要安裝Oracle客戶端原因,相對較為麻煩,相關過程可以參見本部落格的文章“python環境連結Oracle資料庫”:http://blog.itpub.net/18841027/viewspace-2655148/。

      分析過的資料也需要各種圖示來展現,因此 python 也少不了資料視覺化工具,因此出現了 Matplotlib ,其中應用最廣泛的稱為 mat plotlib.pyplot 模組兒。

 

四、python資料探勘

       除了簡單分析,我們還需要挖掘 和採用機器學習的演算法 ,因此有了機器學習公共庫 scikit-learn( 簡稱 sklearn ) sklearn 整合了多種機器學習演算法庫,在資料分析過程中能夠快速建立模型。所謂機器學習本質就是首先將資料分成訓練集和測試集,根據訓練集及其目標特徵,通過建立特定模型,然後通過測試資料進行測試評估。評估結果達到預計標準後將模型部署到生產環境,將輸入生產資料(特徵未知的資料集)進行預測判斷的過程。如下圖 1 所示:

 圖1 機器學習過程圖

資料探勘是內容不少的一門專業課程,但在 skl earn 中的的實現概括起來如下圖 2 所示。從圖中可以看出,機器學習的本質也是一個分類的過程。資料分為字元類資料(非連續)和數值類資料(連續),字元類資料的分類我們還是叫分類( classification )而數值類資料的分類叫做迴歸( regression )。另一中分類方法叫做聚類( clustering ),還有為了降低計算和空間複雜的所採取的降維( dimensionality reduction )。

sk l earn 演算法藍圖

五,應用和實戰

       除非我們做科研類工作,我們工作基本聚焦在專案應用和工程實戰。因此,有了以上基礎後,我們得結合具體需求做一些程式碼編寫或已有程式碼的測試工作。當明白這些書上的現成程式碼,且測試成功後,下一步就是對這些程式碼做一些修改能力培養階段,同時回顧之前內容複習一遍,所謂的溫故而知新階段。溫故階段要熟練那些語法,當我們再次閱讀時候領悟到知識點肯定跟第一次學習階段有所不同的,也是必要階段。

       這些階段結束後,我們開始結合工作需求做一些嘗試。也許一開始不好開始或下手。但我們要記住,只有問題解決為導向的學習研究才是真正高效的學習方式。因此,在這個挑戰階段雖然開頭難,但給我帶來成就感和學有所用的關鍵階段。我本人也準備開始踏入該階段,因此現在總結未免過早,當有了收穫,也會逐步分享。

      作為剛入門技術愛好者,在此也分享一下我學習或參考用的書籍:

1 Python 資料分析基礎       餘本國   編著     清華大學出版社

2、Python資料分析與應用  黃紅梅、張良均  主編    中國工信出版集團和人民郵電出版社

3、資料探勘:概念與技術  Jiawei Han and Micheline Kamber著  機械工業出版社

4、推薦系統實踐   項亮  編著  人民優點出版社

5、Hands-On-Recommendation-Systems-with-Python    Rounak_Banik

6、大學計算機 計算機思維  戰德臣教授   哈爾濱工業大學計算機學院

7、大學計算機--Python演算法實踐

 

六,總結

      Python語言易用和具備大量公用庫,可以拿來主義的方式來使用,但作為一個程式語言,要掌握這門語言來將現實世界需求改編為計算機世界的模型和程式程式碼,我們離開不了計算(機)思維。那什麼是計算思維?計算思維的本質就是抽象(Abstraction)與自動化(Automation),即在不同層面進行抽象,以及將這些抽象“機器化”。 國內國內學者和專家的觀點為:計算思維是人類應具備的第三種思維:

1、實驗思維: 實驗è觀察è發現、推斷與總結. ---觀察與歸納

2、理論思維: 假設/預設è定義/性質/定理è證明. ---推理和演繹

3、計算思維: 設計, 構造與計算. ---設計與構造

       計算思維關注的是人類思維中有關可行性、可構造性和可評價性的部分。當前環境下,理論與實驗手段在面臨大規模資料的情況下,不可避免地要用計算手段來輔助進行。

     就像計算機世界基礎由0和1、程式、遞迴構成一樣,在Python學習也離不開這些,尤其是遞迴和迴圈,針對不是計算機專業出身,這些基礎概念的學習補充對後續程式碼理解有很大的幫助。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/18841027/viewspace-2655682/,如需轉載,請註明出處,否則將追究法律責任。

相關文章