中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

Python那么火,到底可以用來做什么?

2018-08-06    來源:raincent

容器云強勢上線!快速搭建集群,上萬Linux鏡像隨意使用
如果您正在考慮學習Python,或者您最近剛開始學習,您可能會問自己:

“我到底可以用Python做什么?”

這是個棘手的問題,因為Python有很多用途。但是隨著時間的推移,我發(fā)現(xiàn)Python主要可用于一下三個方面:

  • Web開發(fā)
  • 數(shù)據(jù)科學——包括機器學習、數(shù)據(jù)分析和數(shù)據(jù)可視化
  • 腳本編寫

我們就依次來看看吧。

 

Web開發(fā)

 

像Django和Flask這樣基于Python的Web框架最近在web開發(fā)中變得非常流行。

這些web框架幫助您用Python創(chuàng)建服務器端代碼(后端代碼)。這些代碼在您的服務器上而不是在用戶設(shè)備以及瀏覽器上(前端代碼)運行。如果您不熟悉后端代碼和前端代碼之間的區(qū)別,請參閱下面腳注。

 

但是,等等,我為什么需要web框架呢?

那是因為web框架讓構(gòu)建通用后端邏輯變得更簡單了。這包括把不同的URL映射到Python代碼塊、處理數(shù)據(jù)庫和生成用戶在瀏覽器中看到的HTML文件。

我應該用哪個Python web框架?

DjangoFlask是兩種最流行的Python web框架。如果您剛剛開始學習,那么可以用它們中的任何一個。

Django和Flask有什么區(qū)別?

Gareth Dwyer有篇關(guān)于這個話題的文章寫得非常好,我在這里引用一下:

<引用開始>

主要的對比:

  • Flask提供簡潔、靈活和細粒度控制。它很是客觀(讓您決定如何實現(xiàn)想要的東西)。
  • Django提供一種包羅萬象的體驗:您可以獲得管理面板、數(shù)據(jù)庫接口、ORM(object-relational mappling,對象關(guān)系映射),還有開箱即用的應用程序和項目的目錄結(jié)構(gòu)。

您應該選擇:

  • Flask,如果您專注于體驗和學習機會,或者您想對選用哪個組件有更大的控制權(quán)(例如您想使用哪個數(shù)據(jù)庫和如何與它們交互)。
  • Django,如果你專注于最終的產(chǎn)品。特別是如果您正在做一個簡單的應用程序(如一個新聞網(wǎng)站、電子商店,或者博客)并且希望有一個直接明了的做法。

</引用結(jié)束>

換句話說,如果您是位初學者,F(xiàn)lask可能是個更好的選擇,因為用到的組件比較少。如果您想要更多的定制,那么Flask也是個更好的選擇。

而且,根據(jù)我的數(shù)據(jù)工程師朋友Jonathan T Ho的看法,F(xiàn)lask更適合創(chuàng)建那些所謂的REST API的東西,因為它比Django更靈活。

另一方面,如果您想構(gòu)建一些簡單的東西,Django會讓您更快地達到目標。

好,我們接著談談下一個!

 

數(shù)據(jù)科學 —— 包括機器學習、數(shù)據(jù)分析和數(shù)據(jù)可視化

 

首先,我們來回顧一下什么是機器學習。

我認為,解釋什么是機器學習的最好方法莫過于舉個例子。

假設(shè)您想開發(fā)一個程序用于自動檢測圖片中的內(nèi)容。

因此,對于下面的這張圖片(圖片1),您希望您的程序能識別出這是條狗。

??

圖1

而對于下面的這張圖片(圖片2),您希望您的程序能識別出它是張桌子。

??

圖2

您也許會說,我可以用幾行代碼搞定。例如,如果在圖片上有很多淡棕色的像素,那么我們可以說那是狗。

或者,您可以找到在照片中檢測邊緣的方法。然后,您也許會說,如果有很多直邊,那么那就是一張桌子。

但是,這種方法很快就遇到麻煩了。如果圖片上是條沒有棕色毛發(fā)的白狗怎么辦?如果圖片上顯示的只是桌子的圓形部分呢?

輪到機器學習大顯身手了。

機器學習可實現(xiàn)一些算法,能自動檢測給定輸入中的模式。

比如,您給機器學習的算法提供1000張狗的照片和1000張桌子的照片。那么,它將會學習區(qū)別狗和桌子。當您給出一張狗或桌子的新圖片時,它將能夠識別出是狗還是桌子。

我認為,這和嬰兒學習新事物有點類似。嬰兒是如何知道一樣東西看起來像狗,而另一樣東西看起來像桌子呢?可能就是從大量的例子中學到的。

您也許不會明確地告訴一個嬰兒:“如果一樣東西是毛茸茸的,并且有著淡棕色的毛發(fā),那么它可能是條狗。”

您可能只是說:“那是條狗。這也是條狗。這是桌子。那也是桌子。”

機器學習算法的工作方式大致相同。

您可以把同樣的想法應用于:

  • 推薦系統(tǒng)(像YouTube、Amazon和Netflix在用的)
  • 面部識別
  • 聲音識別

您可能聽說過的流行的機器學習算法包括:

  • 神經(jīng)網(wǎng)絡(luò)
  • 深度學習
  • 支持向量機
  • 隨機森林

您可以使用任何一個上述算法來解決我剛才解釋過的圖片標注問題。

 

將Python用于機器學習

 

有一些流行的Python機器學習庫和框架,其中最流行的兩個是scikit-learnTensorFlow

  • scikit-learn附帶了一些更流行的內(nèi)置機器學習算法。我剛才提到了其中的幾個。
  • TensorFlow更像是個低級庫,它允許您構(gòu)建自定義機器學習算法。

如果您剛開始一個機器學習項目,那么我建議您先用scikit-learn。如果您開始遇到效率問題,那么我建議用TensorFlow。

我應該如何學習機器學習呢?

要學習機器學習基礎(chǔ)知識的話,我建議選擇斯坦;蚣又堇砉W院的機器學習課程。

請注意,您需要微積分和線性代數(shù)的基本知識以理解這些課程中的某些內(nèi)容。

然后,我會用Kaggle來練習從課程中學到的知識。Kaggle是個網(wǎng)站,大家在這個網(wǎng)站上比試誰能對一個給定的問題構(gòu)建出最佳的機器學習算法。網(wǎng)站上也有給初學者用的好教程。

 

那么數(shù)據(jù)分析和數(shù)據(jù)可視化呢?

 

為了幫助您理解,我在這里給您舉個簡單的例子。假設(shè),您為一家在線銷售產(chǎn)品的公司工作。

那么,作為數(shù)據(jù)分析師,您也許會畫一個類似的條形圖。

??

條形圖1-由Python生成

從這張圖上,我們可以看到,在某個特定的周日,對于某件產(chǎn)品來說,男性購買了400多件,而女性購買了大約350件。

作為一個數(shù)據(jù)分析師,您也許會對其中的差異做出幾個可能的解釋。

一個很顯然的可能解釋是,該產(chǎn)品在男性中比在女性中更流行。另一個可能的解釋是,樣本量太小,這個差異是偶爾產(chǎn)生的。還有一個可能的解釋是,在周日,由于某種原因,男性比女性更傾向于購買該產(chǎn)品。

為了搞明白哪個解釋是正確的,您可能繪制另一張圖,如下圖所示:

??

折線圖1-由Python生成

我們不再只顯示周日的數(shù)據(jù),而是整整一周的數(shù)據(jù)。正如您所見,從這張圖中,我們可以看到,這種差異在不同的日子里很一致。

從這個簡單的分析中,您可能得出了結(jié)論,對這種差異,一個最有說服力的解釋就是,這個產(chǎn)品更受男性而不是女性歡迎。

另一方面,如果您看到是如下所示的圖呢?

??

折線圖2-同樣由Python生成

那么,如何解釋出現(xiàn)在周日的差異呢?

您也許會說,也許出于某種原因,男性在周日更傾向于購買該產(chǎn)品。或者,也許只是巧合,男性在周日購買了更多的該產(chǎn)品。

好了,這是個簡化的例子,展示了數(shù)據(jù)分析在真實世界中看起來的樣子。

我在谷歌和微軟工作的時候做過數(shù)據(jù)分析,跟這個例子非常相似,只是更復雜一些罷了。事實上,我在谷歌工作時,是用Python來做這種分析,而我在微軟的時候,用的是JavaScript。

在這兩家公司工作的時候,我用SQL從數(shù)據(jù)庫中提取數(shù)據(jù)。然后,我會用Python和Matplotlib(在谷歌工作時)或JavaScrip和D3.js(在微軟工作時)進行數(shù)據(jù)可視化和分析。

 

用Python進行數(shù)據(jù)分析/可視化

 

最流行的數(shù)據(jù)可視化庫之一是Matplotlib。

剛開始學習的話,它是個不錯的庫,因為:

  • 它容易上手
  • 其他一些庫,如seaborn是以它為基礎(chǔ)的。因此,學習Matplotlib可以幫助您隨后學習其他庫。

我應該如何學習用Python進行數(shù)據(jù)分析/可視化?

首先,您應該學習數(shù)據(jù)分析和可視化的基礎(chǔ)知識。我在網(wǎng)上沒有找到相關(guān)的好資源。因此,最終,我在YouTube上做了相關(guān)的視頻(用Python和Matplotlib進行數(shù)據(jù)分析/可視化的入門課程)。

我還在Pluralsight上做了相關(guān)的整個課程,如果您報名參加他們的10天免費試用,您就可以免費獲得這個課程。

這兩個我都推薦給您。

學習了數(shù)據(jù)分析和可視化基礎(chǔ)知識之后,在Coursera和Khan Academy上學習統(tǒng)計的基礎(chǔ)知識也是很有幫助的。

 

腳本編寫

 

什么是腳本編寫?

通常,腳本編寫是指編寫小程序以讓簡單任務自動化。

我在這里給您舉個來自我個人經(jīng)驗的例子。

我曾在日本的一家小型初創(chuàng)企業(yè)工作,我們有個電郵支持系統(tǒng),用來回復客戶通過電郵給我們提出的問題。

我在那里工作的時候,我的任務是計算含有特定關(guān)鍵字的電郵數(shù)量,這樣我們才可以分析我們收到的電郵。

我們本來應該用人工統(tǒng)計,但是,我寫了個簡單的程序/簡單的腳本來自動完成該任務。

事實上,那時我們是用Ruby編寫腳本,但是,對于這樣的任務來說,Python也是個不錯的語言選擇。Python適合這種類型的任務主要是因為它有相對簡單的語法并且容易編寫。用它來寫些小程序并進行測試花不了多少時間。

 

那些嵌入式應用呢?

 

對于嵌入式應用,我不在行,但是我知道Python可以配合Rasberry Pi工作。它在那些硬件發(fā)燒友中非常流行。

 

那么游戲呢?

 

您可以用PyGame庫來開發(fā)游戲,但是,它不是最流行的游戲引擎。如果把游戲作為興趣愛好,您可以用它來構(gòu)建項目,但是,如果您真的要做游戲開發(fā),我個人不建議選擇它。

相反,我推薦您用Unity的C#腳本,它是最流行的游戲引擎之一。它允許您在很多平臺上構(gòu)建游戲,這些平臺包括:Mac、Windows、iOS和安卓。

 

那么,桌面應用呢?

 

您可以用Python的Tkinter來開發(fā),但是它似乎不是最流行的選擇。

相反,用Java、C#和C++等語言開發(fā)桌面應用看起來更流行。

最近,一些公司也已經(jīng)開始使用JavaScript來創(chuàng)建桌面應用程序了。

比如,Slack的桌面應用程序是用Electron來構(gòu)建的。它允許您用JavaScript來構(gòu)建桌面應用。

就我個人來說,如果我要構(gòu)建一個桌面應用,我會用JavaScript。它允許您復用web版本的某些代碼(如果有的話)。

 

選Python 3還是Python 2?

 

我會推薦Python 3,因為它更現(xiàn)代化,并且目前它更受歡迎。

腳注:對于后端代碼和前端代碼的的說明(萬一您對這些術(shù)語不熟悉)。

假設(shè),您想做個類似于Instagram的東西。

那么,您需要為每種想支持的設(shè)備創(chuàng)建前端代碼:

  • Swift用于iOS設(shè)備
  • Java用于安卓設(shè)備
  • JavaScript用于web瀏覽器

每組代碼都將在對應類型的設(shè)備/瀏覽器上運行。這組代碼將決定應用的布局看上去的樣子,單擊時按鈕的外觀等等。

但是,您仍然需要存儲用戶信息和照片的能力。除了在用戶的設(shè)備商儲存這些信息,您還會希望將這些信息儲存在服務器上,這樣,每個用戶的關(guān)注者就能看到用戶的照片。

這里就是后端代碼/服務器端代碼的用武之地了。您需要編寫后端代碼以執(zhí)行以下操作:

  • 持續(xù)跟蹤誰在關(guān)注誰
  • 壓縮照片,以免占據(jù)太多存儲空間
  • 在發(fā)現(xiàn)功能中給每個用戶推薦照片和新賬號

好了,這就是后端代碼和前段代碼之間的區(qū)別。

順便說一下,Python不是編寫后端/服務器端代碼的唯一好選擇。還有很多其他流行的選擇,包括Node.js,它是基于JavaScript的。

閱讀英文原文:What exactly can you do with Python? Here are Python’s 3 main applications.

標簽: 代碼 服務器 服務器端 谷歌 腳本 數(shù)據(jù)分析 數(shù)據(jù)庫 網(wǎng)絡(luò)

版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請與原作者聯(lián)系。

上一篇:讓大數(shù)據(jù)創(chuàng)造大價值 我國大數(shù)據(jù)發(fā)展具有獨特優(yōu)勢

下一篇:想做大數(shù)據(jù)可視化?來看騰訊高手的實戰(zhàn)案例!