如果你準(zhǔn)備開始學(xué)習(xí)
Python
或者你已經(jīng)開始了學(xué)習(xí)
Python
,那么,你肯能會問自己: “我用
Python
究竟能做些什么?”
嗯,這是一個棘手的問題,因?yàn)镻ython有很多應(yīng)用方向。但隨著時間的推移,我發(fā)現(xiàn)Python有3個主要應(yīng)用方向:
- Web 開發(fā)
- 數(shù)據(jù)科學(xué) - 包括機(jī)器學(xué)習(xí),數(shù)據(jù)分析和數(shù)據(jù)可視化
- 腳本
讓我們依次來談?wù)劽恳粋€。
Web 開發(fā)
最近基于
Python
的Web框架(如
Django
和
Flask
)在Web開發(fā)中變得非常流行。
這些Web框架可幫助你在
Python
中創(chuàng)建服務(wù)器端代碼(后端代碼)。 這是在你的服務(wù)器上運(yùn)行的代碼,而不是用戶的設(shè)備和瀏覽器(前端代碼)。 如果你不熟悉后端代碼和前端代碼之間的區(qū)別,請參閱下面的腳注。
但是等等,為什么我需要一個Web框架?
這是因?yàn)閃eb框架使構(gòu)建通用后端邏輯變得更容易。 這包括將不同的URL映射到Python代碼塊,處理數(shù)據(jù)庫以及生成用戶在其瀏覽器上看到的HTML文件。
我應(yīng)該使用哪個Python Web框架?
Django
和
Flask
是兩個最流行的Python Web框架。 如果你剛?cè)腴T,我建議你使用其中一個。
主要對比:
Flask
提供簡單,靈活和細(xì)粒度控制。 它是不受歡迎的(它可以讓你決定如何實(shí)現(xiàn)它)。
Django
提供了一個包羅萬象的體驗(yàn):你可以獲得管理面板,數(shù)據(jù)庫接口,
ORM
[對象關(guān)系映射]以及開箱即用的應(yīng)用程序和項(xiàng)目的目錄結(jié)構(gòu)。
你應(yīng)該選擇:
Flask
,如果你專注于體驗(yàn)和學(xué)習(xí)機(jī)會,或者你想要更多地控制使用哪些組件(例如你想要使用哪些數(shù)據(jù)庫以及如何與它們進(jìn)行交互)。
Django
,如果你專注于最終產(chǎn)品。特別是如果你正在開發(fā)一個直接的應(yīng)用程序,如新聞網(wǎng)站,電子商店或博客,你希望總是有一種明顯的做事方式。
換句話說,如果你是初學(xué)者,
Flask
可能是一個更好的選擇,因?yàn)樗懈俚慕M件需要處理。 此外,如果你想要更多自定義,
Flask
是更好的選擇。
另一方面,如果你想要直接構(gòu)建一些東西,
Django
可能會讓你更快地到達(dá)那里。
現(xiàn)在,如果你想學(xué)習(xí)
Django
,我推薦名為《Django for Beginners》的書。
好的,我們來看下一個主題吧!
數(shù)據(jù)科學(xué) - 包括機(jī)器學(xué)習(xí),數(shù)據(jù)分析和數(shù)據(jù)可視化
1. 機(jī)器學(xué)習(xí)
首先,讓我們回顧一下機(jī)器學(xué)習(xí)是什么
我認(rèn)為解釋機(jī)器學(xué)習(xí)的最佳方法是給你一個簡單的例子。 假設(shè)你想要開發(fā)一個程序來自動檢測圖片中的內(nèi)容。
因此,如下圖(圖1),你希望程序識別出它是一只狗。
鑒于下面的另一個(圖2),你希望程序識別它是一個桌子。
你可能會說,好吧,我可以寫一些代碼來做到這一點(diǎn)。 例如,如果圖片中有很多淺棕色像素,那么我們可以說它是一只狗。
或者,你可以弄清楚如何檢測圖片中的邊緣。 然后,你可能會說,如果有很多直邊,那么它就是一張桌子。
但是,這種方法很快變得棘手。 如果照片中有一只沒有棕色頭發(fā)的白狗怎么辦? 如果圖片只顯示桌子的圓形部分怎么辦?
這就是機(jī)器學(xué)習(xí)的用武之地。
機(jī)器學(xué)習(xí)通常實(shí)現(xiàn)一種, 自動檢測給定輸入模式的算法。
你可以給機(jī)器學(xué)習(xí)算法,給1000張狗的照片和1000張桌子的照片。 然后,它將學(xué)習(xí)狗和桌子之間的區(qū)別。 當(dāng)你給它一張狗或桌子的新圖片時,它將能夠識別它是哪一個。
我認(rèn)為這有點(diǎn)類似于嬰兒學(xué)習(xí)新事物的方式。 寶寶怎么知道一件事看起來像狗,另一件看起來像一張桌子? 可能來自一堆例子。
你可能沒有明確地告訴嬰兒,“如果有毛茸茸的東西,有淺棕色的頭發(fā),那么它可能是一只狗。”
你可能會說,“那是一只狗。 這也是一只狗。 這是一張桌子。 那個也是一張桌子。“
機(jī)器學(xué)習(xí)算法的工作方式大致相同。
你可以將相同的想法應(yīng)用于:
-
推薦系統(tǒng)(如
YouTube
,亞馬遜和Netflix
) - 人臉識別
- 語音識別
等其他場景。
你可能聽說過的流行的機(jī)器學(xué)習(xí)算法包括:
- 神經(jīng)網(wǎng)絡(luò)
- 深度學(xué)習(xí)
- 支持向量機(jī)
- 隨機(jī)森林
你可以使用上述任何算法來解決我之前解釋過的圖片標(biāo)注問題。
用于機(jī)器學(xué)習(xí)的
Python
針對機(jī)器學(xué)習(xí)有流行的機(jī)器學(xué)習(xí)庫和Python框架。
其中兩個最受歡迎的是 scikit-learn 和 TensorFlow 。
scikit-learn 附帶了一些內(nèi)置的更流行的機(jī)器學(xué)習(xí)算法。 我在上面提到了其中一些。 TensorFlow 更像是一個低級庫,允許你構(gòu)建自定義機(jī)器學(xué)習(xí)算法。
如果你剛剛開始使用機(jī)器學(xué)習(xí)項(xiàng)目,我建議你先從 scikit-learn 開始。
如果你開始遇到效率問題,那么我會開始研究 TensorFlow 。
我該如何學(xué)習(xí)機(jī)器學(xué)習(xí)?
要學(xué)習(xí)機(jī)器學(xué)習(xí)基礎(chǔ)知識,請注意,你需要微積分和線性代數(shù)的基本知識才能理解這些課程中的一些材料。
2. 數(shù)據(jù)分析和數(shù)據(jù)可視化又是怎樣呢?
為了幫助你了解這些可能是什么樣子,讓我在這里給你一個簡單的例子。
假設(shè)你正在為一家在線銷售某些產(chǎn)品的公司工作。
然后,作為數(shù)據(jù)分析師,你可以繪制這樣的條形圖。
用Python生成的條形圖
從這張圖中,我們可以看出,男性購買了超過400個單位的產(chǎn)品,女性在這個特定的星期天購買了約350個單位的產(chǎn)品。
作為數(shù)據(jù)分析師,你可能會對這種差異提出一些可能的解釋。
一個明顯可能的解釋是,這種產(chǎn)品比男性更受男性歡迎。 另一種可能的解釋可能是樣本量太小而且這種差異只是偶然造成的。 而另一種可能的解釋可能是,男性傾向于僅在周日因某種原因購買該產(chǎn)品。
要了解哪些解釋是正確的,你可能會繪制另一個這樣的圖表。
我們不是僅顯示星期日的數(shù)據(jù),而是查看整整一周的數(shù)據(jù)。 如你所見,從這張圖中,我們可以看到這種差異在不同的日子里非常一致。
從這個小小的分析中,你可以得出結(jié)論,對這種差異最有說服力的解釋是,這種產(chǎn)品更容易受到男性的歡迎,而不是女性。
另一方面,如果你看到像這樣的圖表怎么辦?
那么,是什么解釋了周日的差異?
你可能會說,也許男人往往只是因?yàn)槟撤N原因在周日購買更多的這種產(chǎn)品。 或者,也許只是巧合,周日男人買了更多。
因此,這是數(shù)據(jù)分析在現(xiàn)實(shí)世界中可能看起來像的簡化示例。
我在谷歌和微軟工作時所做的數(shù)據(jù)分析工作與這個例子非常相似 - 只是更復(fù)雜。 我實(shí)際上在谷歌使用
Python
進(jìn)行這種分析,而我在微軟使用
JavaScript
。
我在這兩家公司使用
SQL
來從我們的數(shù)據(jù)庫中提取數(shù)據(jù)。 然后,我會使用
Python
和
Matplotlib
(在谷歌)或
JavaScript
和
D3.js
(在微軟)來可視化和分析這些數(shù)據(jù)。
用
Python
進(jìn)行數(shù)據(jù)分析和數(shù)據(jù)可視化
Matplotlib是最受歡迎的數(shù)據(jù)可視化庫之一。 這是一個非常適合開始學(xué)習(xí)的庫,原因如下:
- 容易上手
-
其他一些庫如
seaborn
就是基于它的。 因此,學(xué)習(xí)Matplotlib
將幫助你稍后學(xué)習(xí)這些其他庫。
腳本
什么是腳本?
腳本通常是指編寫旨在自動執(zhí)行簡單任務(wù)的小程序。
那么,讓我舉一個我個人經(jīng)歷的例子。
我曾經(jīng)在日本的一家小型創(chuàng)業(yè)公司工作,我們有一個電子郵件支持系統(tǒng)。 這是一個系統(tǒng),讓我們回復(fù)客戶通過電子郵件發(fā)送給我們的問題。
當(dāng)我在那里工作時,我的任務(wù)是計算包含某些關(guān)鍵字的電子郵件的數(shù)量,以便我們分析收到的電子郵件。
我們可以手動完成它,但是,我編寫了一個簡單的程序/簡單腳本來自動執(zhí)行此任務(wù)。
實(shí)際上,我們當(dāng)時使用Ruby,但Python也是這類任務(wù)的好語言。 Python適合這種類型的任務(wù),主要是因?yàn)樗哂邢鄬唵蔚恼Z法并且易于編寫。 用它寫一些小東西并測試它也很快。
嵌入式應(yīng)用程序呢?
我不是嵌入式應(yīng)用程序方面的專家,但我知道Python可以與Rasberry Pi一起使用。 它似乎是硬件愛好者中的一種流行應(yīng)用。
游戲又如何呢?
你可以使用名為PyGame的庫來開發(fā)游戲,但它并不是最流行的游戲引擎。 你可以用它來建立一個愛好項(xiàng)目,但如果你認(rèn)真對待游戲開發(fā),我個人不會選擇它。
相反,我建議開始使用
Unity
與
C#
,這是最受歡迎的游戲引擎之一。 它允許你為許多平臺構(gòu)建游戲,包括Mac,Windows,iOS和Android。
桌面應(yīng)用又怎樣?
你可以使用Tkinter制作一個Python,但它似乎也不是最受歡迎的選擇。
相反,似乎Java,C#和C ++等語言更受歡迎。
最近,一些公司也開始使用JavaScript來創(chuàng)建桌面應(yīng)用程序。
例如,Slack的桌面應(yīng)用程序是用
Electron
構(gòu)建的。 它允許你使用
JavaScript
構(gòu)建桌面應(yīng)用程序。
就個人而言,如果我正在構(gòu)建一個桌面應(yīng)用程序,我會使用
JavaScript
選項(xiàng)。 它允許你重用Web版本中的一些代碼(如果有的話)。
但是,我也不是桌面應(yīng)用程序方面的專家,所以如果你不同意或同意我的意見,請在評論中告訴我。
如果你依然在編程的世界里迷茫,可以加入我們的Python學(xué)習(xí)扣qun:784758214,看看前輩們是如何學(xué)習(xí)的。交流經(jīng)驗(yàn)。從基礎(chǔ)的python腳本到web開發(fā)、爬蟲、django、數(shù)據(jù)挖掘等,零基礎(chǔ)到項(xiàng)目實(shí)戰(zhàn)的資料都有整理。送給每一位python的小伙伴!分享一些學(xué)習(xí)的方法和需要注意的小細(xì)節(jié),點(diǎn)擊加入我們的 python學(xué)習(xí)者聚集地
Python 3 or Python 2?
我會推薦Python 3,因?yàn)樗F(xiàn)代,而且在這一點(diǎn)上它是一個更受歡迎的選項(xiàng)。
腳注:關(guān)于后端代碼與前端代碼的說明(以防你不熟悉這些條款):
假設(shè)你想制作像
Instagram
這樣的東西。
然后,你需要為要支持的每種類型的設(shè)備創(chuàng)建前端代碼。
你可以使用,例如:
適用于iOS的Swift 適用于Android的Java 用于Web瀏覽器的JavaScript 每組代碼都將在每種類型的設(shè)備/瀏覽器上運(yùn)行。這將是一組代碼,用于確定應(yīng)用程序的布局如何,單擊按鈕時的外觀等等。
但是,你仍然需要能夠存儲用戶的信息和照片。你需要將它們存儲在服務(wù)器上,而不僅僅存儲在用戶的設(shè)備上,以便每個用戶的關(guān)注者都可以查看他/她的照片。
這是后端代碼/服務(wù)器端代碼的用武之地。你需要編寫一些后端代碼來執(zhí)行以下操作:
跟蹤誰在關(guān)注誰 壓縮照片,以免占用太多存儲空間 在發(fā)現(xiàn)功能中向每個用戶推薦照片和新帳戶 因此,這是后端代碼和前端代碼之間的區(qū)別。
順便說一下,Python并不是編寫后端/服務(wù)器端代碼的唯一好選擇。還有許多其他流行的選擇,包括
Node.js
,它基于JavaScript。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
