若是您正在考慮學習Python,或者您最近剛開始學習,前端
您可能會問本身:「我到底能夠用Python作什麼?」web
這是個棘手的問題,由於Python有不少用途。算法
可是隨着時間的推移,數據庫
我發現Python主要可用於一下三個方面:後端
咱們就依次來看看吧。瀏覽器
像Django和Flask這樣基於Python的Web框架最近在web開發中變得很是流行。服務器
這些web框架幫助您用Python建立服務器端代碼(後端代碼)。網絡
這些代碼在您的服務器上而不是在用戶設備以及瀏覽器上(前端代碼)運行。app
若是您不熟悉後端代碼和前端代碼之間的區別,請參閱下面腳註。框架
可是,等等,我爲何須要web框架呢?
那是由於web框架讓構建通用後端邏輯變得更簡單了。
這包括把不一樣的URL映射到Python代碼塊、處理數據庫和生成用戶在瀏覽器中看到的HTML文件。
我應該用哪一個Python web框架?
Django和Flask是兩種最流行的Python web框架。
若是您剛剛開始學習,那麼能夠用它們中的任何一個。
Django和Flask有什麼區別?
主要的對比:
您應該選擇:
換句話說,若是您是位初學者,Flask多是個更好的選擇,由於用到的組件比較少。
若是您想要更多的定製,那麼Flask也是個更好的選擇。
並且,根據個人數據工程師朋友的見解,
Flask更適合建立那些所謂的REST API的東西,由於它比Django更靈活。
另外一方面,
若是您想構建一些簡單的東西,
Django會讓您更快地達到目標。
好,咱們接着談談下一個!
首先,咱們來回顧一下什麼是機器學習。
我認爲,解釋什麼是機器學習的最好方法莫過於舉個例子。
假設您想開發一個程序用於自動檢測圖片中的內容。
所以,對於下面的這張圖片(圖片1),您但願您的程序能識別出這是條狗。
圖1
而對於下面的這張圖片(圖片2),您但願您的程序能識別出它是張桌子。
圖2
您也許會說,我能夠用幾行代碼搞定。例如,若是在圖片上有不少淡棕色的像素,那麼咱們能夠說那是狗。
或者,您能夠找到在照片中檢測邊緣的方法。而後,您也許會說,若是有不少直邊,那麼那就是一張桌子。
可是,這種方法很快就遇到麻煩了。若是圖片上是條沒有棕色毛髮的白狗怎麼辦?若是圖片上顯示的只是桌子的圓形部分呢?
輪到機器學習大顯身手了。
小編推薦一個學Python的學習裙【 二二七,四三五,四五零 】,不管你是大牛仍是小白,是想轉行仍是想入行均可以來了解一塊兒進步一塊兒學習!裙內有不少乾貨和技術分享
機器學習可實現一些算法,能自動檢測給定輸入中的模式。
好比,您給機器學習的算法提供1000張狗的照片和1000張桌子的照片。那麼,它將會學習區別狗和桌子。當您給出一張狗或桌子的新圖片時,它將可以識別出是狗仍是桌子。
我認爲,這和嬰兒學習新事物有點相似。嬰兒是如何知道同樣東西看起來像狗,而另外一樣東西看起來像桌子呢?可能就是從大量的例子中學到的。
您也許不會明確地告訴一個嬰兒:「若是同樣東西是毛茸茸的,而且有着淡棕色的毛髮,那麼它多是條狗。」
您可能只是說:「那是條狗。這也是條狗。這是桌子。那也是桌子。」
機器學習算法的工做方式大體相同。
您能夠把一樣的想法應用於:
您可能據說過的流行的機器學習算法包括:
您可使用任何一個上述算法來解決我剛纔解釋過的圖片標註問題。
有一些流行的Python機器學習庫和框架,其中最流行的兩個是scikit-learn和TensorFlow。
若是您剛開始一個機器學習項目,那麼我建議您先用scikit-learn。若是您開始遇到效率問題,那麼我建議用TensorFlow。
請注意,您須要微積分和線性代數的基本知識以理解這些課程中的某些內容。
爲了幫助您理解,我在這裏給您舉個簡單的例子。假設,您爲一家在線銷售產品的公司工做。
那麼,做爲數據分析師,您也許會畫一個相似的條形圖。
條形圖1-由Python生成
從這張圖上,咱們能夠看到,在某個特定的週日,對於某件產品來講,男性購買了400多件,而女性購買了大約350件。
做爲一個數據分析師,您也許會對其中的差別作出幾個可能的解釋。
一個很顯然的可能解釋是,該產品在男性中比在女性中更流行。另外一個可能的解釋是,樣本量過小,這個差別是偶爾產生的。還有一個可能的解釋是,在週日,因爲某種緣由,男性比女性更傾向於購買該產品。
爲了搞明白哪一個解釋是正確的,您可能繪製另外一張圖,以下圖所示:
折線圖1-由Python生成
咱們再也不只顯示週日的數據,而是整整一週的數據。正如您所見,從這張圖中,咱們能夠看到,這種差別在不一樣的日子裏很一致。
從這個簡單的分析中,您可能得出告終論,對這種差別,一個最有說服力的解釋就是,這個產品更受男性而不是女性歡迎。
另外一方面,若是您看到是以下所示的圖呢?
折線圖2-一樣由Python生成
那麼,如何解釋出如今週日的差別呢?
您也許會說,也許出於某種緣由,男性在週日更傾向於購買該產品。或者,也許只是巧合,男性在週日購買了更多的該產品。
好了,這是個簡化的例子,展現了數據分析在真實世界中看起來的樣子。
我在谷歌和微軟工做的時候作過數據分析,跟這個例子很是類似,只是更復雜一些罷了。事實上,我在谷歌工做時,是用Python來作這種分析,而我在微軟的時候,用的是JavaScript。
在這兩家公司工做的時候,我用SQL從數據庫中提取數據。而後,我會用Python和Matplotlib(在谷歌工做時)或JavaScrip和D3.js(在微軟工做時)進行數據可視化和分析。
最流行的數據可視化庫之一是Matplotlib。
剛開始學習的話,它是個不錯的庫,由於:
我會推薦Python 3,由於它更現代化,而且目前它更受歡迎。
腳註:對於後端代碼和前端代碼的的說明(萬一您對這些術語不熟悉)。
假設,您想作個相似於Instagram的東西。
那麼,您須要爲每種想支持的設備建立前端代碼:
每組代碼都將在對應類型的設備/瀏覽器上運行。這組代碼將決定應用的佈局看上去的樣子,單擊時按鈕的外觀等等。
可是,您仍然須要存儲用戶信息和照片的能力。除了在用戶的設備商儲存這些信息,您還會但願將這些信息儲存在服務器上,這樣,每一個用戶的關注者就能看到用戶的照片。
這裏就是後端代碼/服務器端代碼的用武之地了。您須要編寫後端代碼以執行如下操做:
好了,這就是後端代碼和前段代碼之間的區別。
順便說一下,Python不是編寫後端/服務器端代碼的惟一好選擇。還有不少其餘流行的選擇,包括Node.js,它是基於JavaScript的。