Python那麽火,到底能用來做什麽?我們來說說Python3的主要應用
您可能會問自己:“我到底可以用Python做什麽?”
這是個棘手的問題,因為Python有很多用途。
但是隨著時間的推移,
我發現Python主要可用於一下三個方面:
Web開發
數據科學——包括機器學習、數據分析和數據可視化
腳本編寫
我們就依次來看看吧。
一、Web開發
像Django和Flask這樣基於Python的Web框架最近在web開發中變得非常流行。
這些web框架幫助您用Python創建服務器端代碼(後端代碼)。
這些代碼在您的服務器上而不是在用戶設備以及瀏覽器上(前端代碼)運行。
如果您不熟悉後端代碼和前端代碼之間的區別,請參閱下面腳註。
但是,等等,我為什麽需要web框架呢?
那是因為web框架讓構建通用後端邏輯變得更簡單了。
這包括把不同的URL映射到Python代碼塊、處理數據庫和生成用戶在瀏覽器中看到的HTML文件。
我應該用哪個Python web框架?
Django和Flask是兩種最流行的Python web框架。
如果您剛剛開始學習,那麽可以用它們中的任何一個。
Django和Flask有什麽區別?
主要的對比:
Flask提供簡潔、靈活和細粒度控制。它很是客觀(讓您決定如何實現想要的東西)。
Django提供一種包羅萬象的體驗:您可以獲得管理面板、數據庫接口、ORM(object-relational mappling,對象關系映射),還有開箱即用的應用程序和項目的目錄結構。
Flask,如果您專註於體驗和學習機會,或者您想對選用哪個組件有更大的控制權(例如您想使用哪個數據庫和如何與它們交互)。
Django,如果你專註於最終的產品。特別是如果您正在做一個簡單的應用程序(如一個新聞網站、電子商店,或者博客)並且希望有一個直接明了的做法。
換句話說,如果您是位初學者,Flask可能是個更好的選擇,因為用到的組件比較少。
如果您想要更多的定制,那麽Flask也是個更好的選擇。
而且,根據我的數據工程師朋友的看法,
Flask更適合創建那些所謂的REST API的東西,因為它比Django更靈活。
另一方面,
如果您想構建一些簡單的東西,
Django會讓您更快地達到目標。
好,我們接著談談下一個!
二、數據科學 —— 包括機器學習、數據分析和數據可視化
首先,我們來回顧一下什麽是機器學習。
我認為,解釋什麽是機器學習的最好方法莫過於舉個例子。
假設您想開發一個程序用於自動檢測圖片中的內容。
因此,對於下面的這張圖片(圖片1),您希望您的程序能識別出這是條狗。
而對於下面的這張圖片(圖片2),您希望您的程序能識別出它是張桌子。
您也許會說,我可以用幾行代碼搞定。例如,如果在圖片上有很多淡棕色的像素,那麽我們可以說那是狗。
或者,您可以找到在照片中檢測邊緣的方法。然後,您也許會說,如果有很多直邊,那麽那就是一張桌子。
但是,這種方法很快就遇到麻煩了。如果圖片上是條沒有棕色毛發的白狗怎麽辦?如果圖片上顯示的只是桌子的圓形部分呢?
輪到機器學習大顯身手了。
比如,您給機器學習的算法提供1000張狗的照片和1000張桌子的照片。那麽,它將會學習區別狗和桌子。當您給出一張狗或桌子的新圖片時,它將能夠識別出是狗還是桌子。
我認為,這和嬰兒學習新事物有點類似。嬰兒是如何知道一樣東西看起來像狗,而另一樣東西看起來像桌子呢?可能就是從大量的例子中學到的。
您也許不會明確地告訴一個嬰兒:“如果一樣東西是毛茸茸的,並且有著淡棕色的毛發,那麽它可能是條狗。”
您可能只是說:“那是條狗。這也是條狗。這是桌子。那也是桌子。”
機器學習算法的工作方式大致相同。
您可以把同樣的想法應用於:
推薦系統(像YouTube、Amazon和Netflix在用的)
面部識別
聲音識別
您可能聽說過的流行的機器學習算法包括:
神經網絡
深度學習
支持向量機
隨機森林
您可以使用任何一個上述算法來解決我剛才解釋過的圖片標註問題。
三、將Python用於機器學習
有一些流行的Python機器學習庫和框架,其中最流行的兩個是scikit-learn和TensorFlow。
scikit-learn附帶了一些更流行的內置機器學習算法。我剛才提到了其中的幾個。
TensorFlow更像是個低級庫,它允許您構建自定義機器學習算法。
如果您剛開始一個機器學習項目,那麽我建議您先用scikit-learn。如果您開始遇到效率問題,那麽我建議用TensorFlow。
請註意,您需要微積分和線性代數的基本知識以理解這些課程中的某些內容。
四、那麽數據分析和數據可視化呢?
為了幫助您理解,我在這裏給您舉個簡單的例子。假設,您為一家在線銷售產品的公司工作。
那麽,作為數據分析師,您也許會畫一個類似的條形圖。
從這張圖上,我們可以看到,在某個特定的周日,對於某件產品來說,男性購買了400多件,而女性購買了大約350件。
作為一個數據分析師,您也許會對其中的差異做出幾個可能的解釋。
一個很顯然的可能解釋是,該產品在男性中比在女性中更流行。另一個可能的解釋是,樣本量太小,這個差異是偶爾產生的。還有一個可能的解釋是,在周日,由於某種原因,男性比女性更傾向於購買該產品。
為了搞明白哪個解釋是正確的,您可能繪制另一張圖,如下圖所示:
我們不再只顯示周日的數據,而是整整一周的數據。正如您所見,從這張圖中,我們可以看到,這種差異在不同的日子裏很一致。
從這個簡單的分析中,您可能得出了結論,對這種差異,一個最有說服力的解釋就是,這個產品更受男性而不是女性歡迎。
另一方面,如果您看到是如下所示的圖呢?
折線圖2-同樣由Python生成
那麽,如何解釋出現在周日的差異呢?
您也許會說,也許出於某種原因,男性在周日更傾向於購買該產品。或者,也許只是巧合,男性在周日購買了更多的該產品。
好了,這是個簡化的例子,展示了數據分析在真實世界中看起來的樣子。
我在谷歌和微軟工作的時候做過數據分析,跟這個例子非常相似,只是更復雜一些罷了。事實上,我在谷歌工作時,是用Python來做這種分析,而我在微軟的時候,用的是JavaScript。
在這兩家公司工作的時候,我用SQL從數據庫中提取數據。然後,我會用Python和Matplotlib(在谷歌工作時)或JavaScrip和D3.js(在微軟工作時)進行數據可視化和分析。
五、用Python進行數據分析/可視化
最流行的數據可視化庫之一是Matplotlib。
剛開始學習的話,它是個不錯的庫,因為:
它容易上手
其他一些庫,如seaborn是以它為基礎的。因此,學習Matplotlib可以幫助您隨後學習其他庫。
六、選Python 3還是Python 2?
我會推薦Python 3,因為它更現代化,並且目前它更受歡迎。
腳註:對於後端代碼和前端代碼的的說明(萬一您對這些術語不熟悉)。
假設,您想做個類似於Instagram的東西。
那麽,您需要為每種想支持的設備創建前端代碼:
Swift用於iOS設備
Java用於安卓設備
JavaScript用於web瀏覽器
每組代碼都將在對應類型的設備/瀏覽器上運行。這組代碼將決定應用的布局看上去的樣子,單擊時按鈕的外觀等等。
但是,您仍然需要存儲用戶信息和照片的能力。除了在用戶的設備商儲存這些信息,您還會希望將這些信息儲存在服務器上,這樣,每個用戶的關註者就能看到用戶的照片。
這裏就是後端代碼/服務器端代碼的用武之地了。您需要編寫後端代碼以執行以下操作:
持續跟蹤誰在關註誰
壓縮照片,以免占據太多存儲空間
在發現功能中給每個用戶推薦照片和新賬號
好了,這就是後端代碼和前段代碼之間的區別。
順便說一下,Python不是編寫後端/服務器端代碼的唯一好選擇。還有很多其他流行的選擇,包括Node.js,它是基於JavaScript的。
如果有什麽想法或者意見的話歡迎來加扣扣:1192893289
Python那麽火,到底能用來做什麽?我們來說說Python3的主要應用