1. 程式人生 > >我用了半年的時間,把python學到了能出書的程度

我用了半年的時間,把python學到了能出書的程度

    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電子版給到大家。

&n