【Python】Python到底能幹啥?
- 2020 年 3 月 4 日
- 筆記
如果您想學習Python(或者最近開始學習Python),則可能會問自己:
「我到底可以使用Python做什麼?」
很多的答案會湧入我們的腦海,因為Python實在是能做太多事情了。
但是慢慢靜下心來思考,我發現Python主要有三個方面的應用,今天就讓我們一起來討論一下吧:
第一個:Web開發
第二個:數據科學-包括機器學習,數據分析和數據可視化
第三個:腳本編寫
讓我們依次來揭開她神秘的面紗。
最近,基於Python的Web框架(如Django和Flask)在Web開發中非常流行。
這些Web框架可幫助我們使用Python創建伺服器端的一些程式碼(後端程式碼)。那是在伺服器上運行的程式碼,而不是在用戶的設備和瀏覽器上運行的程式碼(前端程式碼)。如果您不熟悉後端程式碼和前端程式碼之間的區別,請參見下面的腳註。
但是,為什麼我們需要一個Web框架?
這是因為用Web框架使得構建通用後端邏輯更加容易。這包括將不同的URL映射到Python程式碼塊,處理資料庫以及生成用戶在瀏覽器中看到的HTML文件。
我應該使用哪個Python網路框架?
Django和Flask是兩個最受歡迎的Python網路框架。如果是剛剛入門,建議使用這兩個中的一個。
那麼Django和Flask有什麼區別?
參考Gareth Dwyer撰寫的一篇有關該問題的文章,因此在這裡引用一下:
主要對比: Flask:提供了簡單性,靈活性的控制。它是不受限制的(它使您可以決定如何實現事物)。 Django:提供了全方位的體驗:您可以很方便地獲得管理面板,資料庫介面,ORM [對象關係映射]以及目錄結構。 您可能應該選擇: Flask,如果您專註於體驗和學習機會,或者想要更多地控制要使用哪些組件(例如,要使用哪些資料庫以及如何與它們交互)。 Django,如果您專註於最終產品。尤其是如果您正在開發簡單的應用程式(例如新聞站點,電子商店或部落格),並且希望始終有一種單一的,顯而易見的處理方式。
換句話說,如果您是初學者,則Flask可能是一個更好的選擇,因為它需要處理的組件更少。另外,如果您想進行更多訂製,則Flask是更好的選擇。
另一方面,如果您想直接構建一些東西,Django可能會讓您更快地到達那裡。
現在,如果您想學習Django,我推薦一本名為《Django for Beginners》的書籍。你可以在公眾號後台回復Django獲得。
數據科學-包括機器學習,數據分析和數據可視化
首先,讓我們來回顧一下機器學習
可以參考公眾號的幾篇文章進行複習:
要解釋什麼是機器學習的最好方法是給您一個簡單的例子。
假設要開發一個程式來自動檢測圖片中的內容。
比如說下面這張圖片,您希望通過程式識別出它是狗。

又比如下面的圖片內容,您希望程式識別出它是一個桌子。

您可能會說,嗯,我可以編寫一些程式碼來做到這一點。例如,如果圖片中有很多淺棕色的像素,那麼我們可以說它是一隻狗。
對於第二張圖片,您可以弄清楚如何檢測圖片中的邊緣。然後,您可能會說,如果有很多筆直的邊緣,那就是一張桌子。
但是,這種方法很快就會發現行不通。如果圖片中有隻白狗沒有棕色頭髮怎麼辦?如果圖片僅顯示桌子的圓形部分怎麼辦?
這就是機器學習的用武之地。
機器學習通過一種演算法,來自動檢測給定輸入中的模式。
例如,您可以將1,000張狗的照片和1,000張桌子的照片提供給機器學習演算法。然後,它將了解狗和桌子之間的區別。當給它一張新的狗或桌子的圖片時,它將能夠識別出它是狗狗還是桌子。
這其實有點類似於嬰兒學習新事物的方式。嬰兒是如何學會區分狗狗和桌子的?
我們通常一開始不會明確地告訴嬰兒:「毛茸茸且頭髮淺棕色,是狗。」
我們可能會說:「那是一條狗。這也是一條狗。這是一張桌子。那也是一張桌子。」
而我們機器學習演算法的工作方式大致相同。
您可以將相同的想法應用於:
推薦系統(例如YouTube,Amazon和Netflix)
人臉識別
語音識別
以及其他應用程式中。
常見的機器學習演算法包括:
神經網路
深度學習
支援向量機
隨機森林
我們可以使用上述任何一種演算法來解決我之前解釋的圖片標記問題。
Python常用於機器學習
Python擁有非常流行的機器學習庫和框架。
其中最受歡迎的兩個是:scikit-learn和TensorFlow。
scikit-learn內置了一些流行的機器學習演算法。 TensorFlow更像是一個低級庫,但是可讓您構建自定義的機器學習演算法。
如果您剛開始使用機器學習項目,建議您先從scikit-learn開始。如果您開始遇到效率問題,那麼TensorFlow則更加適合。
其次要學習機器學習的基礎知識,我更會推薦斯坦福大學或加州理工學院的機器學習課程。(請注意:需要複習一些微積分和線性代數的基本知識才能理解這些課程)
然後,將自己所學習的內容在Kaggle(kaggle.com)網站中加以練習。在這個網站上,有很多不錯的初學者教程。
下面我將在這裡舉一個簡單的例子。
假設您在一家在線銷售某些產品的公司工作。
然後,作為數據分析師,您可以繪製一個條形圖。

條形圖1 —用Python生成
從該圖可以看出,在這個特定的星期日,男性購買了400多的這種產品,女性購買了大約350多。
作為數據分析師,您可能會針對這種差異提出一些可能的解釋:
一個明顯的可能解釋是:與男性相比,該產品在男性中更受歡迎。另一個可能的解釋可能是樣本數量太小,而這種差異是偶然造成的。還有另一個可能的解釋是,由於某種原因,男人傾向於只在星期日購買更多該產品。
那麼要了解這些解釋中的哪一個是正確的,您可以繪製另一張這樣的圖表。

折線圖1-使用Python生成
我們不僅僅可以顯示星期日的數據,還可以查看整周的數據。從該圖可以看出,這一差異在不同的日子是相當一致的。
從這個小小的分析中,您可能會得出結論,對此差異最有說服力的解釋是,與男性相比,該產品在男性中更受歡迎。
但是,如果您看到像這樣的圖形怎麼辦?

折線圖2-也使用Python生成
那麼,什麼如何解釋星期天的不同呢?
那麼你可能會說,也許出於某種原因,男人往往只會在星期日購買更多這種產品。或者,也許是偶然的,人們在星期天買了更多。
這就是在現實生活中數據分析所需要用到的一個簡單的場景。
在Google和Microsoft兩家公司的數據分析工作與該示例非常相似,只是更為複雜。實際上,在Google通常是使用Python進行這種分析,而在Microsoft則使用了JavaScript。
兩家公司的數據分析都使用SQL從資料庫中提取數據。然後,再使用Python和Matplotlib(在Google)或JavaScript和D3.js(在Microsoft)來可視化和分析這些數據。
使用Python進行數據分析/可視化
Matplotlib是用於數據可視化的最受歡迎的庫之一。
這是一個很好的入門庫,因為:
很容易上手,同時諸如seaborn之類的其他一些庫也以此為基礎。
因此,學習Matplotlib將有助於您稍後學習其他一些庫。
如何使用Python學習數據分析/可視化?
您應該首先學習數據分析和可視化的基礎知識。推薦大家觀看下面一個部落客的影片來了解下這些基礎知識:
然後我還推薦大家在Pluralsight網站上完成數據分析/可視化的完整課程,可以通過註冊來獲得10天的免費學習。
在學習了數據分析和可視化的基礎知識之後,我們還可以在Coursera和Khan Academy等網站學習統計基礎知識。
腳本編寫
什麼是腳本?
腳本編寫通常是指編寫自動化、以及一些簡單任務的小型程式。
例如我們可以通過腳本來統計包含某些關鍵字的電子郵件的數量,以便我們可以分析收到的電子郵件。
在下面的時間裡,我們公眾號團隊將會推出一系列實用的腳本案例供大家進行學習和使用。