Python到底能做什麼?
- 來源 | 願碼(ChainDesk.CN) 內容編輯
- 願碼Slogan | 連線每個程式設計師的故事
- 網站 | http://chaindesk.cn
- 願碼願景 | 打造全學科IT系統免費課程,助力小白使用者、初級工程師0成本免費系統學習、低成本進階,幫助BAT一線資深工程師成長並利用自身優勢創造睡後收入。
- 官方公眾號 | 願碼 | 願碼服務號 | 區塊鏈部落
- 免費加入願碼全思維工程師社群 | 任一公眾號回覆“願碼”兩個字獲取入群二維碼
本文閱讀時間:11min
如果您正在考慮學習Python,或者已經開始學習它,那麼您可能會問: “我使用Python到底能做什麼?”
這是一個很難回答的問題,因為Python有很多應用程式。
但隨著時間的推移,我發現Python有三個主要的流行應用程式:
- Web開發
- 資料科學 - 包括機器學習,資料分析和資料視覺化
- 指令碼
Web開發
最近基於Python的Web框架(如 Django 和 Flask) 在Web開發中變得非常流行。
我為什麼需要一個Web框架?
這是因為Web框架使構建通用後端邏輯變得更容易。這包括將不同的URL對映到Python程式碼塊,處理資料庫以及生成使用者在其瀏覽器上看到的HTML檔案。
我應該使用哪個Python Web框架?
Django和Flask是兩個最流行的Python Web框架。如果是剛入門,建議你使用其中一個。
Django和Flask有什麼區別?
主要對比:
· Flask提供簡單,靈活和細粒度控制。它是非特定的(它可以讓你決定如何實現它)。
· Django提供了一個包羅永珍的體驗:您可以獲得管理面板,資料庫介面,ORM [物件關係對映]以及開箱即用的應用程式和專案的目錄結構。
你應該選擇:
· Flask,如果您專注於體驗和學習機會,或者您想要更多地控制使用哪些元件(例如您想要使用哪些資料庫以及如何與它們進行互動)。
· Django,如果你專注於最終產品,特別是如果你正在開發一個直接的應用程式,如新聞網站,電子商店或部落格,你希望總是有一個單一的,顯而易見的方式來做事情。
換句話說,如果你是初學者,Flask可能是一個更好的選擇,因為它需要處理的元件更少。此外,如果您想要更多自定義,Flask是更好的選擇。
另一方面,如果你想要直接構建一些東西,Django更符合你的需求。
資料科學 - 包括機器學習,資料分析和資料視覺化
首先,機器學習是什麼?
解釋機器學習的最佳方法是給你一個簡單的例子。假設您想要開發一個程式來自動檢測圖片中的內容。
因此,如下圖(圖1),您希望程式識別出它是一隻狗。
鑑於下面的另一個(圖2),您希望程式識別它是一個桌子。
你可能會說,好吧,我可以寫一些程式碼來做到這一點。例如,如果圖片中有很多淺棕色畫素,那麼我們可以說它是一隻狗。或者,您可以弄清楚如何檢測圖片中的邊緣。然後,你可能會說,如果有很多直邊,那麼它就是一張桌子。
但是,這種方法很快變得棘手。如果照片中有一隻沒有棕色頭髮的白狗怎麼辦?如果圖片只顯示錶格的圓形部分怎麼辦?
這就是機器學習的切入點。
機器學習通常實現一種自動檢測給定輸入中的模式的演算法。
你可以給機器學習演算法給1000張狗的照片和1000張桌子的照片。然後,它將學習狗和桌子之間的區別。當你給它一張狗或桌子的新圖片時,它將能夠識別它是哪一個。
我認為這有點類似於嬰兒學習新事物的方式。寶寶怎麼知道一件事看起來像狗,另一件看起來像一張桌子?可能來自一堆例子。
你可能沒有明確地告訴嬰兒,“如果有毛茸茸的東西,有淺棕色的頭髮,那麼它可能是一隻狗。”你可能會說,“那是一隻狗。這也是一隻狗。這是一張桌子。那個也是一張桌子。“
機器學習演算法的工作方式大致相同。
您可以將相同的想法應用於:
· 推薦系統(想想YouTube,亞馬遜和Netflix)
· 人臉識別
· 語音識別
等應用程式。
您可能聽說過的流行機器學習演算法包括:
· 神經網路
· 深度學習
· 支援向量機
· 隨機森林
您可以使用上述任何演算法來解決我之前解釋過的圖片標註問題。
用於機器學習的Python
有流行的機器學習庫和Python框架。
其中兩個最受歡迎的是 scikit-learn 和 TensorFlow 。
· scikit-learn附帶了一些內建的更流行的機器學習演算法。我在上面提到了其中一些。
· TensorFlow更像是一個底層庫,允許您構建自定義機器學習演算法。
如果您剛開始使用機器學習專案,我建議您先從scikit-learn開始。如果你開始遇到效率問題,那麼我會開始研究TensorFlow。
我該如何掌握機器學習?
要掌握機器學習基礎知識,我會推薦斯坦福大學或加州理工學院的機器學習課程。
請注意,您需要微積分和線性代數的基本知識才能理解這些課程中的一些知識點。
然後,用Kaggle練習所學到的東西。這是一個人們競爭為特定問題構建最佳機器學習演算法的網站。他們也為初學者提供了很好的教程。
那麼資料分析和資料視覺化呢?
列舉一個簡單的例子:假設您正在為一家線上銷售某些產品的公司工作。作為資料分析師,您可以繪製這樣的條形圖。
從這張圖中,我們可以看出,男性購買了超過400個單位的產品,女性在這個特定的星期天購買了約350個單位的產品。
作為資料分析師,您可能會對這種差異提出一些可能的解釋。
一個明顯可能的解釋是,這種產品比起女性更受男性歡迎。另一種可能的解釋可能是樣本量太小而且這種差異只是偶然造成的。而另一種可能的解釋可能是,男性傾向於僅在週日因某種原因購買該產品。
為了理解這些解釋中的哪一個是正確的,您可以繪製另一個像這樣的圖。
我們不是僅顯示星期日的資料,而是檢視整整一週的資料。如您所見,從這張圖中,我們可以看到這種差異在不同的日子裡非常一致。
從這個小小的分析中,你可以得出結論,對這種差異最有說服力的解釋是,這種產品更容易受到男性的歡迎,而不是女性。
如果你看到像這樣的圖表怎麼辦?
那麼,是什麼解釋了週日的差異?
你可能會說,也許男人往往只是因為某種原因在週日購買更多的這種產品。或者,也許只是巧合,週日男人買了更多。
所以,這是一個說明資料分析在現實世界中可能是什麼樣子的簡化的例子。
使用Python進行資料分析/視覺化
Matplotlib是最受歡迎的資料視覺化庫之一。
· 很容易上手
· 其他一些圖書館,如Seaborn,都是以它為基礎的。因此,學習matplotlib將有助於您以後學習這些其他庫。
我應該如何使用Python學習資料分析/視覺化?
首先應該瞭解資料分析和視覺化的基礎知識,然後從Coursera和Khan Academy等網站學習統計資料的基礎知識也會有所幫助。
指令碼
什麼是指令碼?
指令碼通常是指編寫旨在自動執行簡單任務的小程式。
舉個例子:我曾經在日本的一家小型創業公司工作,我們有一個電子郵件支援系統。這是一個系統,讓我們回答客戶通過電子郵件傳送給他們的問題。
當我在那裡工作時,我的任務是計算包含某些關鍵字的電子郵件的數量,以便我們分析收到的電子郵件。
我們可以手動完成它,但是,我編寫了一個簡單的程式/簡單指令碼來自動執行此任務。
實際上,我們當時使用Ruby,但Python也是這類任務的好語言。Python適合這種型別的任務,主要是因為它具有相對簡單的語法並且易於編寫。用它寫一些小東西並測試它也很快。
嵌入式應用程式
Python可以與Rasberry Pi一起使用。是硬體愛好者中的一種流行應用。
遊戲
您可以使用名為PyGame的庫來開發遊戲,但它並不是最流行的遊戲引擎。你可以用它來建立一個愛好專案,但如果你對遊戲開發很認真的話,我個人不會選擇它。
相反,建議開始使用Unity與C#,這是最受歡迎的遊戲引擎之一。它允許您為許多平臺構建遊戲,包括Mac,Windows,iOS和Android。
桌面應用程式
您可以使用Tkinter製作一個Python,但它似乎也不是最受歡迎的選擇。
相反,似乎Java,C#和C ++等語言更受歡迎。最近,一些公司也開始使用JavaScript來建立桌面應用程式。
例如,Slack的桌面應用程式是用Electron構建的。它允許您使用JavaScript構建桌面應用程式。
就個人而言,如果我正在構建一個桌面應用程式,我會使用JavaScript選項。它允許您重用Web版本中的一些程式碼(如果有的話)。
Python 3還是Python 2?
推薦Python 3,因為它更現代,而且在這一點上它是一個更受歡迎的選項。
備註:關於後端程式碼與前端程式碼的說明(以防您不熟悉這些術語):
假設您想製作像Instagram這樣的東西。
然後,您需要為要支援的每種型別的裝置建立前端程式碼。
您可以使用,例如:
· 適用於iOS的Swift
· 適用於Android的Java
· 用於Web瀏覽器的JavaScript
每組程式碼都將在每種型別的裝置/瀏覽器上執行。這將是一組程式碼,用於確定應用程式的佈局如何,單擊按鈕時的外觀等等。
但是,您仍然需要能夠儲存使用者的資訊和照片。您需要將它們儲存在伺服器上,而不僅僅儲存在使用者的裝置上,以便每個使用者的關注者都可以檢視他/她的照片。
這是後端程式碼/伺服器端程式碼的用武之地。您需要編寫一些後端程式碼來執行以下操作:
· 跟蹤誰在追隨誰
· 壓縮照片,以免佔用太多儲存空間
· 在發現功能中向每個使用者推薦照片和新帳戶
因此,這是後端程式碼和前端程式碼之間的區別。
順便說一下,Python並不是編寫後端/伺服器端程式碼的唯一好選擇。還有許多其他流行的選擇,包括基於JavaScript 的Node.js。