我用了半年的時間,把python學到了能出書的程度
- 2021 年 2 月 2 日
- 筆記
Python難學嗎?不難,我邊做項目邊學,過了半年就通過了出版社編輯的面試,接到了一本Python選題,並成功出版。
有同學會說,你有編程基礎外帶項目實踐機會,所以學得快。這話不假,我之前的基礎確實加快了我的學習進度。不過話說回來,我平時也做兼職培訓,我的學生大多是沒基礎的,我用本文給出的資料和方法去培訓他們,學的好的同學,3個月後能幹基本的python項目,照此速度,用1年時間做到精通python,達到出書的程度,應該也不是難事。
所謂贈人玫瑰手有餘香,本人將在這篇文章里,儘可能詳細地復原本人的學習歷程,以及我輔導學生學python的步驟,以求最大程度幫助到那些想學python的同學。
1 要明確目的,沒目的寧可學其它
如果是為了學著玩,那麼不建議學python,因為學了幾周就會因為失去興趣,這樣之前的學習就白費了。
學Python一般需要有比較功利性的目的。比如想學好了跳槽漲工資,又如像我這樣公司項目要用,學好了掙工資,或者干私活要用,學好了能錄製影片能出書。
明確好目標後,你就有學習方向了。比如你學好了想要跳槽,就去看大多數jd對python的要求,無非是數據分析,爬蟲外帶各種機器學習和深度學習應用。比如像我要做金融量化,無非也是數據分析三劍客和深度學習,可能還外帶些爬蟲技術。如果你要出書出影片,也去看人家怎麼做的。總之,有了功利性的目的後,你就會明白你該學習的內容列表。
其實說倒底,哪怕是深度學習知識圖譜人工神經網路這些看上去很高深的技能點,但在python里無非是引入庫+調用方法,無非就是調用時傳入不同的參數罷了,而且這些技能都有現成的書可以參考。但如果你事先不明確學習目標,這樣就不會知道還要學什麼。
我看到網上有不少人在問,python該怎麼學?該學些什麼?這種事情別人怎麼知道?其實更應該問你自己。你以後想怎麼用Python掙錢,就該學什麼。
2 一定得先搭好環境,安裝好第三方包
廢話講多了,不管你要學python里哪些方面的技能,開發環境是一定要搭建的。
1 到官網//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入門實戰(影片教學版)》,京東鏈接://item.jd.com/12868774.html。
我之前搞過類似的活動,如果有同學之前已經拿到了,這次就不用來了。後面合適的時候,我還會送我寫的另外一本python書。
具體做法是:請大家先關注我的公眾號:一起進步,一起掙錢。
然後可以加下我的微信,註明要python股票書,這樣我就會把這本書的word電子版給到大家。