學習Python:作數據科學仍是網站開發?

譯者注:本文的英文原文地址是:Python for Data Science vs Python for Web Development,發佈時間是10月29日。譯者一開始在Python日報上看到推薦,初步看看了,以爲對於決定學習Python的方向有必定參考價值。不過,在翻譯過程當中,愈來愈以爲這其實就是一篇搞Python數據科學培訓的公司寫的軟文,裏面寫的內容仍是比較淺的,只適合像我這樣的初學者瞭解大體狀況。固然,文章提到了Python做爲網絡開發技能的市場需求並非很高,這點感受並非沒有根據。做爲一篇軟文,它成功地激起了我學習數據科學的興趣,而緣由嘛,天然就是作數據科學工做的工資比通常開發工做,高不少(按文章中信息圖的數據,比通常崗位的年薪高5萬美刀!!!)!python

Python編程語言擁有諸多用於網絡應用開發、圖形用戶界面、數據分析、數據可視化等工做的框架和特性。Python可能不是網絡應用開發的理想選擇,可是正被不少機構普遍用於評估大型數據集(dataset)、數據可視化、進行數據分析或製做原型。在數據科學領域,Python編程語言正不斷得到用戶的親睞,而做爲網絡開發語言,Python顯得有點過期了。本篇博文,就是要對這兩種大相徑庭的Python使用方式,進行詳細的對比,而且幫助你們明白一點:若是要利用Python作數據科學工做,並無必要了解它用於網絡開發的部分。程序員

python:web development vs data science

面向數據科學的Python

從頂級金融機構到最小的大數據創業公司,各行各業、各類規模的機構都在使用Python編程語言支撐業務運做。Python做爲數據科學編程語言,不只受頂級大數據公司歡迎,還有衆多技術創業企業擁泵。它還位列2015推薦學習的前10種編程語言。web

世上只有兩種編程語言:一種是老是被人罵的,一種是歷來沒人用的。
-- <cite>Bjarne Stroustrup</cite>正則表達式

Python屬於前一種,並且日益被用於數學計算、機器學習和多種數據科學應用。除了性能依賴性強和底層的業務外,它可以作其餘任何事情。利用Python編程語言的最好選擇,就是作數據分析和統計計算。學習面向網絡開發的Python,須要程序員掌握像Django這樣的多種網絡框架協助建設網站;可是學習面向數據科學的Python,則要求數據科學家學習如何使用正則表達式和科學計算庫,並掌握數據可視化的概念。因爲目的、方向不一樣,那些不瞭解Python網絡開發的程序員,能很輕鬆地走上利用Python編程語言作數據科學工做的道路。算法

Python是一個有着23年曆史的強大動態編程語言,語言表現力很強。程序員編碼完成後,不須要編譯器便可運行程序。面向網絡開發的Python支持多種編程範式,包括結構化編程(structured programming)、函數式編程(functional programming)和麪向對象編程(object-oriented programming, OOP)。Python代碼能夠很容易地嵌入到許多擁有編程接口的網絡應用中。可是,Python更是開發學術研究和科學計算程序的絕佳選擇,這些程序要求運行快速、數學計算精確。數據庫

而面向網絡編程的Python,則要求程序員學習多種網絡開發框架,這個學習難度比較大,由於現有Python網絡開發框架的文檔不太容易理解。固然,不容否定的是,要想利用Python開發一個動態網站或網絡應用,學習網絡框架是必需的。編程

Python網絡開發框架

目前,Python社區已經有多種免費的網絡應用開發框架,好比:數組

Django

Django是幫助完美主義者按時完成工做的Python網絡開發框架(譯者注:原文是Django is the python web development framework for perfectionists with deadlines。這也是Django官網上對該框架的描述)。使用Django進行網絡開發,最適合的場景是開發那些依靠數據庫驅動,同時也具有相似自動化後臺管理界面和模板系統等炫酷功能的應用。對於不須要太多功能的網絡開發項目來講,Django多是大材小用,主要是它的文件系統容易讓人搞混,並且文件目錄結構要求嚴格。使用Django進行Python網絡開發的公司有紐約時報、Instagram和Pinterest(譯者注:Pinterest聯合創始人Paul Sciarra在Quora上的回答提到了使用Django,Quora地址)。網絡

Flask

Flask是針對初學者的框架,它簡單,輕量,初學者很快就能夠上手開發單頁網絡應用。這個框架並不支持驗證,沒有數據抽象層和其餘許多框架所包括的組件。它不是一個全棧開發框架,也只用於小型網站的開發。(譯者注:其實Pinterest也使用了Flask,只是沒用在整站開發上,而是用來開發API,具體見連接。)app

CherryPy

CherryPy框架強調要符合Python語言規範,作到程序員像進行面向對象編程同樣開發網絡應用。它仍是諸如TurboGears和Web2py等流行全棧框架的基礎模板引擎。

還有不少其餘框架,包括Pyramid、Bottle和Pylons等,可是不管Python開發者使用哪種框架,他/她都要花精力仔細地研究教程和文檔。

爲何使用Python進行網絡開發不現實?

Python做爲網絡開發語言,極可能是一個不太現實的選擇:

  • 面向網絡開發的Python須要非標準化、昂貴的主機服務,尤爲是程序員使用流行的Python網絡框架開發網站時。因爲利用PHP進行網絡編程如此的便捷,大部分的用戶沒有興趣在Python上投入太多的精力。

  • 面向網絡開發的Python與諸如PHP、Java或Ruby on Rails等語言不一樣,不是一個常常須要的技能。可是面向數據科學的Python卻愈來愈受歡迎,並且因爲它更多地被用於機器學習和其餘數據科學程序,Python更是招聘數據科學家的公司所最看重的技能。

  • 面向網絡開發的Python已經經歷了較長的發展,可是它的學習曲線並無像PHP這樣的網絡編程語言那麼高。

爲何將Python用於數據科學是最好的選擇?

Python編程是驅動大數據、金融、統計和數字運算的核心科技,而它的語法卻像英語同樣易懂。近來,因爲擁有多個針對機器學習、天然語言處理、數據視覺化、數據探索、數據分析和數據挖掘的插件,豐富的Python數據科學生態體系獲得了較大的發展,甚至有將數據科學社區Python化的趨勢。今天,面向數據科學的Python已經具有了清洗、轉換和處理大數據的全部工具。對於數據分析師崗位來講,掌握Python也是最受歡迎的技能。一名具有Python編程能力的數據科學家,能夠在紐約掙到平均年薪14萬美圓的工資。

爲何數據科學家喜歡使用Python語言?

爲何數據科學家喜歡使用Python語言

數據科學家喜歡那些可以快速輸出原型,幫助他們輕鬆地記錄下本身的想法和模型的編程環境。他們喜歡經過分析巨量的數據集,得出結論,完成工做。而Python編程語言則是開發數據科學應用的多面手,由於它能幫助數據科學家,以最短最優的時間進行編碼、調試、運行並獲取結果,從而高效地完成工做。

一名技術嫺熟的企業數據科學家的真正價值,在於利用多種數據視覺化手段,向公司的不一樣利益相關者有效地傳遞數據模式和預測。不然,數據科學工做就是一場零和遊戲。Python以其優良特性,符合高強度科學計算的幾乎全部方面要求,這使得它成爲在不一樣的數據科學應用之間進行編程的絕佳選擇,緣由很簡單:開發人員僅用一種語言就能夠完成開發和分析工做。面向數據科學的Python將企業業務的不一樣部分鏈接在一塊兒,提供了一個數據分享和處理的直接媒介。

  • Python遵循統一的設計哲學,注重可用性、可讀性,對於數據科學的學習曲線也較低。

  • Python有很高的可擴展性,且與Matlab、Stata等語言相比,運行更加快速。

  • 另外,Python生態系統中還在涌現出更多的數據視覺化庫,以及炫酷的應用編程結構,目的是使用圖形更好地展示數據分析的結果。Python社區有着諸如Sci-Kit learn、NumPy、Pandas、Statsmodel和SciPy等許多優秀的數據分析庫。這些庫的數量還在不斷增加。

面向數據科學的Python庫

面向數據科學中數字處理與科學計算的Python編程

數據分析與Python編程語言十分契合。若是你決定要經過Python語言學習數據科學,那麼你應該考慮的下一個問題,就是Python庫中有哪些是能夠完成大部分的數據分析工做?接下來,咱們給你們介紹全球的企業數據科學家都在使用的Python數據分析庫。

NumPy

Numpy是使用Python開發的高級(high level)工具的基礎。這個庫不能用於高級數據分析,可是深刻理解Numpy中面向數組的計算,能夠幫助數據科學家有效使用Pandas庫。

SciPy

SciPy主要用於科學計算,擁有許多不一樣的模塊,可用於特殊函數、圖像處理、插值法(interpolation)、線性代數、常微分方程(ODE)求解器以及其餘多種用途。這個庫還能夠與NumPy數組一塊兒使用,實現許多高效的數學運算。

Pandas

Pandas是用於數據再加工最好的庫,由於它使得處理遺失的數據、自動數據對齊(data alignment)變得更加簡單,它還支持處理從不一樣的數據源收集而來的索引數據。

SciKit
這個流行的機器學習庫擁有多種迴歸、分類和聚類算法,還支持gradient boosting、向量機、樸素貝葉斯模型和邏輯迴歸。這個庫還被設計成可以與NumPy和SciPy進行交互。

Matplotlib

這是一個二維繪圖庫,有着交互性很強的特性,生成的圖標能夠放大、推移,而且可以用於發行刊物印刷出版。並且,還支持多平臺的交互環境。

Matplotlib、NumPy和SciPy是科學計算的基礎。還有許多其餘的Python庫,諸如用於網絡挖掘的Pattern,用於天然語言處理的NLTK,用於深度學習的Theano,用於爬取網絡的Scrappy,IPython,Statsmodels,Mlpy等。對於初學Python數據科學的人,他們須要很好地掌握上面提到的優秀數據分析庫。

相關文章
相關標籤/搜索