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

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