Python難學嗎?不難,我邊做項目邊學,過了半年就通過了出版社編輯的面試,接到了一本Python選題,並成功出版。
有同學會說,你有編程基礎外帶項目實踐機會,所以學得快。這話不假,我之前的基礎確實加快了我的學習進度。不過話說回來,我平時也做兼職培訓,我的學生大多是沒基礎的,我用本文給出的資料和方法去培訓他們,學的好的同學,3個月后能干基本的python項目,照此速度,用1年時間做到精通python,達到出書的程度,應該也不是難事。
所謂贈人玫瑰手有余香,本人將在這篇文章里,盡可能詳細地復原本人的學習歷程,以及我輔導學生學python的步驟,以求最大程度幫助到那些想學python的同學。
1 要明確目的,沒目的寧可學其它
如果是為了學着玩,那么不建議學python,因為學了幾周就會因為失去興趣,這樣之前的學習就白費了。
學Python一般需要有比較功利性的目的。比如想學好了跳槽漲工資,又如像我這樣公司項目要用,學好了掙工資,或者干私活要用,學好了能錄制視頻能出書。
明確好目標后,你就有學習方向了。比如你學好了想要跳槽,就去看大多數jd對python的要求,無非是數據分析,爬蟲外帶各種機器學習和深度學習應用。比如像我要做金融量化,無非也是數據分析三劍客和深度學習,可能還外帶些爬蟲技術。如果你要出書出視頻,也去看人家怎么做的。總之,有了功利性的目的后,你就會明白你該學習的內容列表。
其實說倒底,哪怕是深度學習知識圖譜人工神經網絡這些看上去很高深的技能點,但在python里無非是引入庫+調用方法,無非就是調用時傳入不同的參數罷了,而且這些技能都有現成的書可以參考。但如果你事先不明確學習目標,這樣就不會知道還要學什么。
我看到網上有不少人在問,python該怎么學?該學些什么?這種事情別人怎么知道?其實更應該問你自己。你以后想怎么用Python掙錢,就該學什么。
2 一定得先搭好環境,安裝好第三方包
廢話講多了,不管你要學python里哪些方面的技能,開發環境是一定要搭建的。
1 到官網https://www.python.org/downloads/windows/,下載Python解釋器。
2 下載集成開發環境,比如eclipse+pydev,或者直接用Pycharm,我現在用的是后者。
3 下載第三方包,基本命令是pip install,必要時還需要換源。
Python開發環境怎樣才算搭好呢?
1 能在Pycharm等集成開發環境里運行通python的hello world程序。
2 能正確地下載好第三方包,這里就以numpy舉例,下載好這個庫,並能在pycharm里開發numpy基本程序,這就算好了。
在安裝第三方包時,可能會遇到版本不匹配的問題,具體做法是,凡是遇到安裝錯誤時,就把錯誤提示放網上搜下,總能找到一大堆解決方法,然后慢慢解決。不過這種問題不經常遇到。
3 基本語法該學什么?
我入門用的是如下兩本書,第一本是這個。
我當時是用了大概兩周的時間,把這本書的代碼敲了一遍。然后再敲第二本書的代碼。這本書雖然講的是數據分析,但也講了python的基本語法。
當我把兩本書的代碼敲了一遍時,感覺就能看懂基本的python程序了。當我自己寫好兩本Python書以后,發現自己在入門時,還是走了彎路,倒不是錯誤理解了知識點,而是學了初學階段不需要學的內容。
現在反思下,在搭建好python開發環境后,可以用如下方法入門python語法。
1 就敲些if分支和while循環之類的代碼,理解python的基本結構,同時理解“縮進”的做法。
2 需要看列表字典等基本數據結構,因為python主要用來分析數據,分析數據時就用這些對象來存儲數據。
3 然后再稍微看些異常處理部分的代碼。
同時如下的代碼無需看。
1 面向對象思想方面的代碼,比如類和繼承,這塊在現實項目里基本用不到。
2 文件讀寫部分的代碼。因為數據分析所用的DataFrame能方便地同csv等格式的文件交互,所以基本不會用python核心庫自帶的讀寫文件的方法。
其它的代碼,比如本文分析,正則表達式,urllib這些,不是不重要,而是可以放在項目的具體語境里去看,而無需像背單詞那樣單純地看相關語法,這樣學習的效率會很高。
4 數據分析該學哪些技能?
當下Python用在最多的可能就算數據分析方面,一般數據分析的項目還外帶些機器學習。學這部分的時候,我的建議是:先走通全棧流程,再細看相關方法。
第一,數據分析無非是用Pandas庫的方法,從csv里讀數據,再用numpy方法分析清洗下,再用matplotlib庫畫圖,你可以通過若干案例,把這套流程走通。
我自己感覺我寫的這本書,就是圍繞這個思路寫的。
第二,全棧流程走通以后,你就去看幾個點,第一pandas庫如何讀寫csv(或其它文件),第二如何對dataframe對象里的行列數據進行操作,第三如何用matplotlib庫畫直方圖餅圖等。
學的時候,無需太細看語法,因為學了不用的畫,過幾周就忘了。等到真正做項目時,可以再根據需求來找對應的方法和參數。
比如我需要把讀到的股票數據繪制成折線圖,而且折線圖對刻度標簽和標題都有要求,那么我再以此需求查現成的案例和對應的api,這樣就能馬上學以致用。
5 機器學習和深度學習該怎么學?
學這部分的時候,一定別先看算法。比如你一定別去關注正則化,梯度下降和降維等算法,因為沒必要,而且這些算法很深,你真去看算法的話,估計你的學習自信心馬上就會被打消。
那該怎么學?用自帶的數據集和范例學。
封裝機器學習的sklearn庫自帶很多范例,比如有描述線性回歸的波士頓房價案例,有描述SVM分類器的鳶尾花案例,其它像嶺回歸等算法,也有范例。在這本書里,就用了很多案例講述機器學習。
深度學習也一樣,別看算法,先看api。當大家運行好幾本書的代碼以后,心里就有底了。而且當大家還會發現,你項目里要寫的代碼和你之前看書敲的代碼框架上是差不多的。
1 首先無非是創建各種模型,比如人工神經網絡,SVM等,創建不同模型時,可能也就是構造函數和類名有所不同。
2 然后再傳入特征值和目標值,比如我在做股票量化時,特征值是開盤價最高價最低價成交量等,特征值是收盤價。在不同的項目里,只要有業務需求,一定也能確定好特征值和目標值,我們程序員要做的就是,在fit方法里傳入特征值和目標值,然后讓模型訓練即可。
3 訓練好了以后再調用predict方法預測即可。
在做項目的時候,預測的結果可能和期望的不同,那不要緊,慢慢扯皮,換入參特征值即可,或者大家再一起討論模型,總之這些都不是技術問題。
6 我總結下來比較好的學習方法
第一,一定得搭建好環境,先把范例代碼運行通,通過效果再反看代碼和方法,這樣基本上代碼運行一遍即可理解關鍵點。
第二,剛開始的時候一定別到網上看資料,因為網上資料第一未必成系統,第二未必能跑通,剛開始的時候一定得系統地照着書去敲代碼。
第三,找入門書的時候,可以看講基本語法的書,但一本就夠了,而更可以去看綜合類的書。比如我上文提到的幾本書,都綜合包含了語法+數據分析+機器學習等技能,這樣的話,就能讓大家在理解語法后,直接進入到具體的項目技能環節。
第四,剛開始做項目的時候,除了自己可以寫代碼外,更可以參考別人類似的案例。比如我要畫股票K線,更要在k線上繪制圖例,那么我就可以找兩三個人家的類似代碼,先運行通,再博采眾長地引入人家的方法和參數,這樣要比什么都自己想要好很多。
7 學好Python如何變現?
回到本文剛開始提到的主題:學好Python如何變現,最直接有效的就是換工作。
具體做法是,以主帶從。比如你的本業是java或大數據,你還是要以這個方向為主,但在簡歷上寫明,你會數據分析和機器學習等,還熟悉神經網絡等模型,然后去投需要此類需求的公司。
當下能用python做數據分析和機器學習的公司,能開出的公司還未必低,這樣如果你兼有python和其它主方向的技能的話,要進此類公司,問題不大。我在培訓學校里,就經常幫助學好python的同學做到這點。
當然用python還能做副業,比如我出過書,錄過視頻課,也給高校做過教材,總之還是這句話:先指定功利性的學習目標,再細化具體要學的內容,然后在通過看書敲代碼等手段系統學,這樣學好后,你一定能以此盈利。
8 文末送電子書
這次要送給大家的還是這本書:《基於股票大數據分析的Python入門實戰(視頻教學版)》,京東鏈接:https://item.jd.com/12868774.html。
我之前搞過類似的活動,如果有同學之前已經拿到了,這次就不用來了。后面合適的時候,我還會送我寫的另外一本python書。
具體做法是:請大家先關注我的公眾號:一起進步,一起掙錢。
然后可以加下我的微信,注明要python股票書,這樣我就會把這本書的word電子版給到大家。