Python 有那麼神嗎?
本人無編程經驗,出於對學術的研究(哈哈,就是為了裝個逼而已,其實基本的 VBA 都夠了),了解到 R 好像用於數據分析和作圖不錯,就想學一下,結果網上有人說學 R 有人說學 Python,我打算去了解一下 Python,結果好像看到一個新世界了, Python 在他們口中好像無所不能,編寫一些自動化程序啊,黑別人網站啊,做遊戲外掛之類的好像真的很牛逼,那麼,Python 真的那麼神奇嗎?我也算有點點小小入門 R 語言了,但是 R 好像基本上只聽說可以做做統計,數據分析,畫畫圖,收集一些數據之類的,而 Python 就好像學會了就可以像幹嘛就幹嘛的,而我有時候出於興趣,也確實希望能自己做些簡單的腳本來完成一些浪費人力的事情,所以我該改學 Python 嗎?我買了 R in Action了,有個大牛說學了 R,學 Python 要簡單,學了 Python,學 R 還是會覺得 R 不簡單!究竟這裡面是個什麼情況呢?
看了大家的答案,我來分享一下使用Python十幾年的經歷和一些心得,喜歡就順手點個贊吧!
[集500贊更新]
1,大學階段:從愛好者到工程師
我本科在北京大學並非計算機專業,但是對Linux和技術產生了濃厚的興趣,一方面來自於室友(NOI參賽隊員)的熏陶,一方面受到Linus Torvalds和開源理念影響,植下了技術和互聯網能夠改變世界的想法種子。
這一階段,Python作為一個非常容易入門上手的腳本語言,讓我可以更快的理解編程的很多思想,體會到通過編程來解決問題的快樂,而沒有被複雜的語法,麻煩的編譯過程和內存管理磨滅了興趣。
下面就是一個例子(我用1個小時寫出來的真實生活中解決實際的問題的例子):
想知道大家都用python寫過哪些有趣的腳本? - 愛家的熊哥的回答2,剛開始工作:從做爬蟲到搜索服務的各種工具
06年第一份工作是在酷訊做搜索,剛開始的時候做爬蟲,後面做了很多不同的工具來服務我們線上搜索的方方面面。
這時候Python對於我來說是一個非常快捷的工具語言,類庫非常豐富,解決各種問題都有很多現成的工具和例子。當時我們的公司開始還有很多自己重建輪子的組件,包括web server等大家現在可能根本不會想到要自己開發的模塊。在這樣的環境中,用Python帶來了很多便利和方便,產品的很多功能和驗證可以更快的實現,大大的提高了生產力。
3,剛開始創業:2個小夥伴維護日活躍200多萬的遊戲
09年趕上社交遊戲創業的風口,我們做的遊戲趕上開心農場這波熱潮,迅速在國內幾個平台獲得每天百萬的用戶,並且成功出海,去日本,美國,台灣,香港和越南等市場掙了些美金。
這個階段,我們的後端整體是用的PHP框架,但是我們用了大量的Python腳步來做服務的部署和各種運維的工具,幫助我們可以在非常少的人手的情況下,可以管理多個地域的很多台伺服器,輕鬆地實現上線部署和監控等任務。
4,國內社區電商獨角獸:用最精鍊的團隊做出最棒的成績
14年初以技術副總裁的身份加入魔都一家很有趣的創業團隊,當時沒有幾個人也沒有現在這麼有名,但是團隊很棒執行力高,做的是自己一直想做的社交和提升生活品質的事。
在短短一年多的時間,我們的整體後端技術棧是Python,nginx,mongodb,new relic加上雲平台的各種服務,在重重招人難的環境下,用非常少的人手扛起了千萬級的用戶和峰值日百萬單的訂單量。做到同樣的交易量,京東花了5年的時間,有的友商有幾倍於我們的工程師數量。
5,創業路上再出發:尋找對技術和產品有追求的小夥伴加入,一起做一個偉大的事業。
去年離開上家公司開始現在的創業,希望能通過互聯網的技術,幫助大家住的更好更有品質。
目前我們的後端技術棧也是Python的,主要考慮是:
1,創業早期更方便快速迭代2,使用Python的小夥伴里很多是好學,對技術有追求,喜歡解決問題的產品型技術,這樣的工程師在創業公司早期最需要-----------------------分隔線--------------------話不多說了,看圖吧
用 R 和 Python 都做過一點微小的工作:某一個學期所有實驗數據的處理工作完全用 R 做,某一個學期是完全用 Python 做的。和你一樣,當年也是看 ggplot2 畫圖覺得特別神就入了 R 的大坑。
首先,兩種語言都能做膠水語言的工作沒有疑問。
但如你描述的那樣,Python 事實上應用範圍更為廣泛,而 R 語言一定程度上被局限在了數據處理、數據分析、數據挖掘領域。我認為可能有下列原因:
首先,R 作為一個想要繼承 S 語言的遺產的語言,它一定程度上應該也繼承了 S 的語法(不過我確實不了解 S 語言),這就導致它的許多表示對於熟悉了 C/C++/Java 這一系統語言的程序員感到許多不適。比如:賦值符號會是「&<-」(雖然通常來說用「=」);而原本應該是屬性訪問的「.」居然可以作為變數名的一部分,類似的功能要用「$」完成(比如 Python 中的 data["salary"] 或 data.salary 到了 R 裡面會是 data$salary),還有比如數組用「c()」表示。雖然這並不是語言設計的問題,但我確實很不喜歡這種不適感。
語法設計方面上,還有一個因素就是各種函數名縮寫的一致性上。 R 嘛,可能也是有歷史包袱的原因,非常的混亂,總是給人像 MATLAB 那樣各種誇張、毫無限制的感覺。比如有的就是把單詞的幾個輔音拿來縮寫,把幾個單詞首字母拿來縮寫(比如 nnls 這樣縮寫 non-negative least squares),這樣無論從可讀性上、函數名的猜測上基本上非常難(可能是科研人員偷懶的通病,誤)。這方面 Python 作為一個給有潔癖的人設計的語言(誤),就會好很多。
另外也要看輪子的狀況。Python 有那個 pip(Python Package Index)等幾個倉庫,R 語言有它那個可怕的 CRAN(The Comprehensive R Archive Network)(明顯 CRAN 這個名字起得更嚇人一些,而且另外能自稱 Comprehensive Archive Network 的 只有 Perl 的 CPAN 和 TeX 的 CTAN 了,都是什麼怪獸的量級的東西了),但輪子的方向其實很明顯,Python 的輪子的方向更為多樣,而 R 語言的輪子會更多得圍繞數據統計分析方面。
然後從數據模型本身而言,Python 會是有「list」、「dict」這一類,傳統意義上的編程模型,受經典編程訓練的人就會用著比較爽吧,而響應的, R 裡面可能會強調「dataframe」數據幀這些(或者有時候是「datatable」,這個記不清了),給統計人員用起來更舒服吧。
互聯網瘋狂發展的這十年來年,Python 在幾家互聯網公司的主推之下不可謂不是大紅大紫如日中天。不過這幾年來 R 乘著數據挖掘的東風,總給人一種東山再起的感覺。君不見微軟在這幾年開發者大會上也有提到 R 方面的東西。
個人感覺 R 給人的感覺和 Perl 更像一點,做某些事情非常好,但是以犧牲一部分東西作為代價的前者主推統計領域,後者更具備泛用性。而 Python 是仔細權衡了這種代價而清理過的 Perl 的。
R 加上 ggplot2 以及其他繪圖包能做的事情大多 Python 或者搭配上 numpy、scipy、matplotlib 也能做,但做的風格如何,優不優雅的話就不好說了。個人更喜歡 Python 因為自己整體上更熟悉。所以具體怎麼選看題主更喜歡哪種風格了(當然是都學!)。
謝邀~
R語言不了解,不敢妄論。
Python 有豐富的類庫, 舉幾個栗子:數據分析: numpy, pandas;
爬蟲: Scrapy, BeautifulSoup;Web框架: Django, Tornado, Flask;GUI: PyQt, wxPython;DevOps: Ansible, SaltStack;
看你是要把 Python 用在什麼領域?
答主自己做 DevOps,常用的是 Ansible/SaltStack(ansible批量部署的問題?、ansible使用密鑰短語的問題? ),有時也會寫點爬蟲(Python 爬蟲進階?、大家都用python寫過哪些有趣的腳本? );如果只是用做數據分析,那我覺得 R 語言和 Python 學哪個都可以,但是在缺少數據支撐的情況下,可以輕易的用 Python 寫個爬蟲獲取數據,R 語言寫爬蟲是否容易我就不知道了。然後是開發體驗,Python 語句寫起來還是很舒服的,代碼看著乾淨清爽, 當看到 R 語言使用 "&<-" 給向量賦值的時候讓我頓覺蛋花一緊。Python 還是一門膠水語言,很多服務都提供了 Python 介面,在 Python 不擅長的領域,可以用其他語言開發,再由 Python 調用,比如寫自動化測試時使用 selenium 庫驅動 Chrome 瀏覽器。
喜愛 Python, 但不要神話 Python, Python 一樣也有讓我不爽的地方,就像部署,Python 開發過程體驗不錯,開發完成後部署卻不容易,這點做的遠遠不如 golang.
(為了簡化 Python 部署過程,特地花費了很長時間自己編譯了 Python 包以及依賴類庫做成綠色安裝包,現在部署應用只需幾分鐘,R 語言部署過程如何,我不了解)任何一門語言都只是工具,在我看來,工具好不好用,除了工具本身的問題,還要看使用者自己的水平,有沒有了解掌握工具,有沒有把工具用到合適的地方。就我自己而言,使用的最多的是 Shell ,其次才是 Python ,因為 ad-hoc 任務 Shell 比 Python 更方便。比如單純要發送一個 POST 請求,一條 curl -XPOST 命令輕輕鬆鬆搞定,甚至還能直接上傳文件,你還能找到比這更簡潔的其他語言寫法么?但是,如果需要處理複雜的 response , 那就有點相形見絀了;當年答主在某電信供應商做 DFx 的時候,有的功能還是在 Excel 裡面寫 VBA ,輕輕鬆鬆對 Excel 進行合併導出,做出的界面也比知乎大V的回答不知高到哪去了。 ?( ̄ε ̄「)?
--------------評論區有問我 Python 綠色部署思路的-----------------
說明:Python 項目的部署,不僅包含自己開發的代碼的部署,還包含配套 Python 版本,依賴的 Python庫,還有一些 C 或 C++的類庫。在用 Docker 之前,Python 項目的部署是一個令人頭疼的問題,操作系統自帶的 Python 版本不配套,要自己安裝配套版本的 Python;
儘管 pip 進行包管理很方便了,然而有些庫是沒有 pip 包的,這就需要自己下載安裝,分分鐘把你折磨死,不信你裝個 pyactivemq 試試;雖然這些都可以使用腳本自動完成,但還是比較耗時的,所以需要提前把一些工作做了。這裡就參考了 Docker 創建鏡像的思路,把這些軟體固化成一個綠色包,部署時把包拷貝過去解壓一下就可使用了,耗時最多也不過幾分鐘。下面講一下我的做法:首先編譯安裝一些 C/C++的類庫,然後編譯安裝 Python (本來我想把整個 Python 包做成一個二進位文件的,但是這樣不利於後期模塊擴展,還是以目錄的形式存在);
然後安裝 setup tool、pip 這些包管理工具,再使用 pip 安裝一些其他模塊;
pip 無法安裝的,自己手工安裝;將 C/C++ 和 Python的整個目錄打包;部署項目時,根據需要設置項目的 PATH 環境變數,環境變數不能解決的就用 ln 創建軟連接的形式解決。(這些部署操作當然是由 Ansible 或者 Shell 腳本來完成啦 )多版本 Python 部署,可以參考我之前的回答:同時裝了Python3和Python2,怎麼用pip? - 洪宸的回答其實 Python 項目的部署,目前互聯網公司有哪些成熟的方案? 這個問題是我提出來跟大家探討的,然而我自己不能在下面回答,2333.
很慚愧,寫的不好…謝邀。
python真沒那麼神,只是稍微順手了一些而已,只是三方庫比大多數主流常用語言多一些而已。神不神這個倒是不好說,但是你學一個東西一般是2個原因,一個是能不能找到工作賺大錢,一個是喜歡不喜歡。
對於第一個問題,Python作為一個流行的通用腳本語言應用的範圍還是很廣泛的,可以說到哪裡都可以用上。
第二個問題的話,我會TCL/Perl/Python/Javascript,而且都是熟練使用很多年而不是僅僅知道大概的類型,從這幾個語言來說最喜歡的是Python,最討厭的是Perl,Javascript 也不喜歡,原因就是 Python寫起來方便簡潔,而且語法和人的下意識邏輯很一致,當然這個東西個人感覺都不一樣吧
Python是一個學了不會後悔的語言,也許它沒你想的好,但是也不會討厭它自從2015年股市大崩盤
2016年搞熔斷後大批散戶被套牢後又想賺錢各路人馬殺入量化交易帶火了python又遇比特幣升值量化炒幣python程序火爆中間還有阿爾法狗人工智慧引力波python程序TensorFlow開源帶火了python機器學習加上hadoop,spark大數據處理的python介面友好
又逢物聯網linux平台深入民間以及python加入高考,小學教材,計算機等級考試時勢造英雄。
python調用萬物api的功能,在金錢及利益的驅動下,帶火了一大波不明真相的群眾跟風學習,人氣持續上升中。。。python 能讓你以最快的速度實現你的想法,人生苦短我用python!
看似Python沒有在哪個領域成為最好的編程語言,但是Python在各個領域都數得上號。從最初的系統管理到互聯網時代,雲計算和大數據時代,再到現在的人工智慧時代,只有「不務正業」的Python,在每一波浪潮之中都在。
在領域細分的時代,像Python這樣的通而不專的語言在每一個領域之內收到的重視都不如領域中的主要語言。然而時代在變,數字化浪潮伴隨著人工智慧與物聯網的東風,洶湧而來,企業為了能夠快速應對,不得不做出改變。
業務沒有線上與線下之分,只有已經數字化和即將數字化之分。
為了跟上需求的變化,原本的「分析-設計-開發-集成-測試-上線」這個瀑布式開發流程被不斷壓縮。在敏捷軟體開發運動的推動下,首先是開發和測試的界限不再明確;後來DevOps運動興起,開發與運維之間的牆被打破;實時大數據架構和數據驅動業務的出現,讓曾經原本相對獨立的數據團隊,也要更緊密的參與到業務開發中。
當所有的角色都在同一個團隊中,為了一個業務目標而寫代碼的時候,用同樣的語言進行交流就變得異常重要。這時候,不掉隊的Python,優勢就顯現出來了。「不務正業」的Python曾在不同的領域中都佔有一席之地,這讓分屬於不同的部門、不同角色的團隊成員有機會使用Python來統一工作語言。不論是開發、測試、運維,還是數據科學家,Python都是一個雖然不是最好、但還不錯的選擇。
來源:無處不在的Python - ThoughtWorks洞見 文:ThoughtWorks 佟達
這就是一粉頂十黑這世上哪有什麼語言很神?能讀一遍就重塑世界嗎?
個人觀點,你不服,我也不改~~~
------------------------Python 在他們口中好像無所不能,編寫一些自動化程序啊,黑別人網站啊,做遊戲外掛之類的好像真的很牛逼,那麼,Python 真的那麼神奇嗎?
「神奇」是一個很難定義的概念,但是如果題主對其定義為如上描述的話,那麼簡單直接的答案就是:「是的,Python 就是這麼神奇」。
目前來看,Python 的應用領域還是非常廣泛的,包括你此刻看到這段文字,背後都是 Python 和 Tornado 的支撐。
------------------------我有時候出於興趣,也確實希望能自己做些簡單的腳本來完成一些浪費人力的事情,所以我該改學 Python 嗎?
如果你有編寫解決問題或者提升效率的需求,那麼我的建議是:你有必要學習 Python,它可以極大提高你的效率,很大可能你不會因為學習了 Python 而感到後悔。但是,不必「改學」。
不同編程語言之間的優劣這裡不做爭奪,但是不同編程語言在不同領域功效是不同的,一個開發者會熟練使用多門語言是很正常的事情,你沒有必要把自己限制在 Python 或者 R 上,所以,你大可兩門語言都學習一下,而不必「改學」。
------------------------我買了 R in Action了,有個大牛說學了 R,學 Python 要簡單,學了 Python,學 R 還是會覺得 R 不簡單!究竟這裡面是個什麼情況呢?
我不會 R,所以對此不作評價。
有人說Python和R的區別是顯而易見的,因為R是針對統計的,python是給程序員設計的,其實這話對Python多多少少有些不公平。2012年的時候我們說R是學術界的主流,但是現在Python正在慢慢取代R在學術界的地位。不知道是不是因為大數據時代的到來。
Python與R相比速度要快。Python可以直接處理上G的數據;R不行,R分析數據時需要先通過資料庫把大數據轉化為小數據(通過groupby)才能交給R做分析,因此R不可能直接分析行為詳單,只能分析統計結果。所以有人說:Python=R+SQL/Hive,並不是沒有道理的。
關於 Python 的介紹
Python 是由 Guido van Rossem 創建於 1991 年,並強調效率和代碼的可讀性。希望深入的數據分析或應用統計技術的程序員是 Python 的主要用戶。
當你越需要在工程環境中工作,你會越喜歡 Python。它是一種靈活的語言,在處理一些新東西上表現很好,並且注重可讀性和簡單性,它的學習曲線是比較低的。
和R類似,Python 也有包,pypi 是一個 Python 包的倉庫,裡面有很多別人寫好的 Python 庫。
Python 也是一個大社區,但它是一個有點比較分散,因為它是一個通用的語言。然而,Python 自稱他們在數據科學中更佔優勢地位:預期的增長,更新穎的科學數據應用的起源在這裡。
Python的一個最明顯的優勢在於其膠水語言的特性,很多書里也都會提到這一點,一些底層用C寫的演算法封裝在Python包里後性能非常高效(Python的數據挖掘包Orange canve 中的決策樹分析50萬用戶10秒出結果,用R幾個小時也出不來,8G內存全部佔滿)。但是,凡事都不絕對,如果R矢量化編程做得好的話(有點小難度),會使R的速度和程序的長度都有顯著性提升。
關於R的介紹
Ross Ihaka 和 Robert Gentleman 於 1995 年在S語言中創造了開源語言R,目的是專註於提供更好和更人性化的方式做數據分析、統計和圖形模型的語言。
起初R主要是在學術和研究使用,但近來企業界發現R也很不錯。這使得中的R成為企業中使用的全球發展最快的統計語言之一。
R的優勢在於有包羅萬象的統計函數可以調用,特別是在時間序列分析方面,無論是經典還是前沿的方法都有相應的包直接使用。 相比之下,Python之前在這方面貧乏不少。但是,現在Python有了pandas。pandas提供了一組標準的時間序列處理工具和數據演算法。因此,你可以高效處理非常大的時間序列,輕鬆地進行切片/切塊、聚合、對定期/不定期的時間序列進行重採樣等。可能你已經猜到了,這些工具中大部分都對金融和經濟數據尤為有用,但你當然也可以用它們來分析伺服器日誌數據。於是,近年來,由於Python有不斷改良的庫(主要是pandas),使其成為數據處理任務的一大替代方案。
做過幾個實驗:
1. 用python實現了一個統計方法,其中用到了ctypes,multiprocess。 之後一個項目要做方法比較,又用回R,發現一些bioconductor上的包已經默認用parallel了。(但那個包還是很慢,一下子把所有線程都用掉了,導致整個電腦使用不能,看網頁非常卡~)
2. 用python pandas做了一些數據整理工作,類似資料庫,兩三個表來回查、匹配。感覺還是很方便的。雖然這些工作R也能做,但估計會慢點,畢竟幾十萬行的條目了。
3. 用python matplotlib畫圖。pyplot作圖的方式和R差異很大,R是一條命令畫點東西,pylot是準備好了以後一起出來。pyplot的顏色選擇有點尷尬,默認顏色比較少,之後可用html的顏色,但是名字太長了~。pyplot 的legend比R 好用多了,算是半自動化了。pyplot畫出來後可以自由拉升縮放,然後再保存為圖片,這點比R好用。
總的來說Python是一套比較平衡的語言,各方面都可以,無論是對其他語言的調用,和數據源的連接、讀取,對系統的操作,還是正則表達和文字處理,Python都有著明顯優勢。 而R是在統計方面比較突出。但是數據分析其實不僅僅是統計,前期的數據收集,數據處理,數據抽樣,數據聚類,以及比較複雜的數據挖掘演算法,數據建模等等這些任務,只要是100M以上的數據,R都很難勝任,但是Python卻基本勝任。
結合其在通用編程方面的強大實力,我們完全可以只使用Python這一種語言去構建以數據為中心的應用程序。 但世上本沒有最好的軟體或程序,也鮮有人能把單一語言挖掘運用到極致。尤其是很多人早先學了R,現在完全不用又捨不得,所以對於想要學以致用的人來說,如果能把R和Python相結合,就更好不過了,很早看過一篇文章——讓R與Python共舞,咱們罈子里有原帖,就不多說了,看完會有更多啟發。
BTW: 如果之前沒有學過R,可以先學Python然後決定是不是學R,如果學了R,學Python的時候會更快上手。
———————————
R和 Python:數字的比較
在網上可以經常看到比較R和 Python 人氣的數字,雖然這些數字往往就這兩種語言是如何在計算機科學的整體生態系統不斷發展,但是很難並列進行比較。主要的原因是,R僅在數據科學的環境中使用,而 Python 作為一種通用語言,被廣泛應用於許多領域,如網路的發展。這往往導致排名結果偏向於 Python,而且從業者工資會較低。
R如何使用?
R 主要用於當數據分析任務需要獨立的計算或分析單個伺服器。這是探索性的工作,因為R有很多包和隨時可用的測試,可以提供提供必要的工具,快速啟動和運行的數量龐大幾乎任何類型的數據分析。R甚至可以是一個大數據解決方案的一部分。
當開始使用R的時候,最好首先安裝 RStudio IDE。之後建議你看看下面的流行包:
Python 如何使用?
如果你的數據分析任務需要使用 Web 應用程序,或代碼的統計數據需要被納入生產資料庫進行集成時你可以使用 python,作為一個完全成熟的編程語言,它是實現演算法一個偉大的工具。
雖然在過去 python 包對於數據分析還處於早期階段,但是這些年已經有了顯著改善。使用時需要安裝 NumPy/ SciPy 的(科學計算)和 pandas(數據處理),以使 Python 可用於數據分析。也看看 matplotlib,使圖形和 scikit-learn 機器學習。
不同於R,Python 有沒有明確的非常好的 IDE。我們建議你看看 Spyder 以及 IPython 網站,看看哪一個最適合你。
R和 Python:數據科學行業的表現
如果你看一下最近的民意調查,在數據分析的編程語言方面,R是明顯的贏家。
有越來越多的人從研發轉向 Python。此外,有越來越多的公司使用這兩種語言來進行組合。
如果你打算從事數據行業,你用好學會這兩種語言。招聘趨勢顯示這兩個技能的需求日益增加,而工資遠高於平均水平。
R:優點和缺點
優點
可視化能力強
可視化通常讓我們更有效地理解數字本身。R和可視化是絕配。一些必看的可視化軟體包是 ggplot2,ggvis,googleVis 和 rCharts。
完善的生態系統
R 具有活躍的社區和一個豐富的生態系統。R包在 CRAN,Bioconductor 的和 Github 上。您可以通過 Rdocumentation 搜索所有的R包。
用於數據科學
R 由統計學家開發,他們可以通過R代碼和包交流想法和概念,你不一定需要有計算機背景。此外企業界也越來越接受R。
缺點
R比較緩慢
R 使統計人員的更輕鬆,但你電腦的運行速度可能很慢。雖然R的體驗是緩慢的,但是有多個包來提高的r性能:pqR,renjin,FastR, Riposte 等等。
R不容易深入學習
R 學習起來並不容易,特別是如果你要從 GUI 來進行統計分析。如果你不熟悉它,即使發現包可能會非常耗時。
Python:優點和缺點
優點
IPython Notebook
IPython Notebook 使我們更容易使用 Python 進行數據工作,你可以輕鬆地與同事共享 Notebook,而無需他們安裝任何東西。這大大減少了組織代碼,輸出和注釋文件的開銷。可以花更多的時間做實際的工作。
通用語言
Python 是一種通用的語言,容易和直觀。在學習上會比較容易,它可以加快你寫一個程序的速度。此外,Python 測試框架是一個內置的,這樣可以保證你的代碼是可重複使用和可靠的。
一個多用途的語言
Python 把不同背景的人集合在一起。作為一種常見的、容易理解,大部分程序員都懂的,可以很容易地和統計學家溝通,你可以使用一個簡單的工具就把你每一個工作夥伴都整合起來。
缺點
可視化
可視化是選擇數據分析軟體的一個重要的標準。雖然 Python 有一些不錯的可視化庫,如 Seaborn,Bokeh 和 Pygal。但相比於R,呈現的結果並不總是那麼順眼。
Python 是挑戰者
Python 對於R來說是一個挑戰者,它不提供必不可少的R包。雖然它在追趕,但是還不夠。
最終你該學習什麼呢:
由你決定!作為一個數據工作者,你需要在工作中選擇最適合需要的語言。在學習之前問清楚這些問題可以幫助你:
- 你想解決什麼問題?
- 什麼是學習語言的凈成本?
- 是什麼在你的領域中常用的工具?
- 什麼是其他可用工具以及如何做這些涉及到的常用工具?
——————————————
來源於:
Python與R的區別和聯繫 - *新*新* - 博客園
一篇文章告訴你,該學R還是Python_IT新聞_博客園
路人路過一下。其實嚴格上來說我也算是很早就摸到編程的門了,初一的時候就開始搞OI了(雖然我搞得不好而且心不在此……)。當時學的還是 C++。現在在一家小企業里安心的做BA(Business Analyst),曾經那些炫到飛起的OI概念都被塵封在心裡了,大部分時候只需要用到SQL和 Excel。扯回來,在這樣的環境下我還是用 Python 寫了不少小腳本的,無他,有很多重複的工作通過自動化的腳本省了我大量的時間(如核對文件里的條目數,上傳/下載FTP,自動檢查有沒有收到郵件回復等)。其實說到底,用什麼編程語言不重要,最重要的是實用,而且你能領會語言背後的精髓(我演算法真的是渣就是了)。之所以用 Python 是因為包很多,用起來也很方便,而且是處理字元串的利器(以前在 C++ 里被字元串虐哭了。。。。),數據分析也有一套。我個人還是比較偏好用 R 做統計分析的,無他,當時在學校里就是這麼學的。但是 R 和 Python 不是完全對立的關係,我更覺得是相輔相成。Python 里 SciPy、NumPy 等包的很多概念都是借鑒了R,R 的語法對不善於編程的人而言可能更為友好一些?(我表示我真的搞不清 tapply/lapply 啥的就是了orz)所以題主不要抱著很大的心理負擔,我高中大學都完全沒有怎麼接觸過 Python,但是現在也一樣腳本寫的飛快用的飛起。Python 並不難學,入門很快,成就感也很高,確實能搭很多東西。和 R 一起配合著用來做學術界的機器學習的話效果更好~(工業界用的是 Scala/Hadoop 吧,完全不懂所以不敢妄言,就先在此打住了2333)
我覺得,python不應該用"神"來描述,,而應該用"爽"來描述。。。。python真是一門寫起來很爽的語言嗎?對於經常寫C嵌入式程序員,,平時用python寫自動化工具時候那個爽勁!嘖嘖
這個提問太浮躁了(?_?)
是的。
以前從未接觸python的人從接觸到能做點實際的東西出來,配合pygame基本也就十幾小時吧(而且大多數時間都是在搜索和看文檔)
對於學C++的,這段時間也就參悟下指針的奧妙吧?
當然,至於python後面有多少坑,是不是屬於易入門難精通的那種就不確定了。
如果學過c語言,python可以兩周入門,如果學過c++,一周入門。之後的事情就是漫長地精益求精過程。python有多神,這是沒有太大意義的,只有大神存在,任何一門語言都很神。Life is short,I use Python .很多了解了python的人都會拿這句話說明python的友好,但我想說的是如果你想進入軟體開發這個行業,python是個很好的選擇。你將深入了解面向對象,但又不至於陷入像c++或java那樣苦澀、繁雜的語法陷阱中舉步維艱。你也將真正體會編程的樂趣,因為你可以快速地實現自己的小項目,或者僅僅是個批量修改文件名這樣的小工具,相信這會是一個很好的開始。樂趣的引導會使人變得瘋狂,深入地探究將真正帶你走進編程的宏圖中。你將探索真正好的代碼是什麼,什麼是架構,什麼是模式……也終將成為人們眼中真正的程序猿、攻城獅。到時候如果你脖子不疼,腰也不酸,你一定是看到了這個回答並點了贊。
寫程序和寫文章一樣,你見過有哪個人因為用了某種語言寫了一篇文章而被稱為大牛的?重要的是內容而不是語言。所謂的內容,設計模式,各種演算法,數據結構,操作系統,數學,這些才是內功。我見過好多自稱xx語言專家的,連基本的設計模式都搞不清。沒錯語法是精通了,但是寫的程序亂糟糟,留你有何用。
無論你是否清楚這個事實,Python實際上已經不是一門年輕的編程語言了。雖然它也不如其它一些語言那麼年長,但它仍然比大部分人所想的要更老一些。它第一次發布的時間是在1991年,雖然這些年它也經歷了相當大的改變,但它現在的用處跟當時並沒有什麼差別。
實際上,這只是它最近這些年變得流行的原因之一:它是一個面向企業和第一流項目的、基於生產的語言,而且它有著長久的歷史。它可以被用做幾乎任何事情,這也是它被認為是「多功能」的原因。你既可以創建一個樹莓派應用,又可以用Python來寫桌面程序的腳本,還可以通過Python來配置伺服器,但Python能做的絕不僅限於此。
使用Python,是不受任何限制的。
究竟是什麼使得Python如此特別?
Python是一門通用的語言,有時甚至可以說是功利主義,因為它被設計得非常容易讀和寫。重點就是:它並非一門複雜的語言。設計者很少強調傳統的語法,使得它及時對於非程序員或者開發人員來說都很容易使用。
此外,由於它被認為是真正通用的、可滿足多種開發需求的語言,所以它也為程序員提供了各式各樣的選擇(https://www.python.org/about/success/)。如果他們使用Python作為一份工作或者一項事業的開端,他們很容易就能跳到另一份工作去,即使這兩份工作之間並無關聯。Python可以被用作系統操作、Web開發、伺服器和管理工具、部署、科學建模等。
但令人驚訝的是,許多開發人員並沒有把Python作為他們的第一語言。因為它是如此容易使用和學習,所以他們選擇它作為第二語言或第三語言。這可能是它在開發人員中如此流行的另一個原因。
而且,世界上最大的科技公司之一——谷歌——也使用Python來開發他們的一部分應用。他們甚至有一個專門的Python開發人員門戶(https://developers.google.com/edu/python/),提供包含視頻、講座等等的免費課程。值得一提的是,網路開發中,Django框架的崛起以及PHP的普及度降低也促成了Python的成功。最終這將會是一場「完美風暴」,開發者、官方支持以及需求都會回歸到合適的水平。
以下是近年來Python變得非常流行的、不太明顯的原因:
1.Python擁有一個健康、活躍、支持度高的社區
很明顯,缺少文檔和開發人員支持的編程語言發展都不太順暢。Python沒有這些問題。它已經存在了相當長的一段時間,有大量的文檔、指南、教程等等。
另外,開發者社區非常活躍。也就是說,任何人需要幫助或支持時,都能及時得到幫助。這個活躍的社區有助於確保所有水平的開發人員(https://www.fullstackpython.com/python-community.html)——從新手到專家——都能獲得幫助。而且,正如任何有經驗的程序員或開發人員所知道的,當你在關鍵時刻遇到開發問題時,來自他人的幫助要麼會使你成功,要麼會使你崩潰。
2.Python有一些很棒的公司贊助商
公司贊助對編程語言的發展很有幫助。C #有微軟,Java有Sun,Facebook使用PHP。谷歌在2006年期間大量使用Python,將它應用在多個平台和應用中。
這為什麼重要?因為像谷歌這樣的公司希望他們的團隊和未來的開發人員使用他們的系統和應用程序,他們就需要提供資源。在這個例子中,谷歌編寫了大量的Python指南和教程。
它提供越來越多的文檔和支持工具,同時也為Python免費打了廣告,至少在開發世界中是這樣。
3.Python擁有大數據
大數據和雲計算方案在企業世界中的應用也是Python扶搖直上的原因。它是數據科學中最流行的語言之一(https://dzone.com/articles/which-are-the-popular-languages-for-data-science),僅次於R語言。它也被用於機器學習和人工智慧系統以及各種現代技術。
當然,這使得Python非常容易就能用於分析和組織成可用的數據。
4.Python有著令人驚異的庫
當你在從事更龐大的項目時,庫可以幫助你節省時間,以及縮短最初的開發周期。Python有著非常優秀的一系列庫,從科學計算的NumPy和SciPy到網路開發的Django。
有一些庫有著更明確的核心,像是機器學習應用的scikit-learn和自然語言處理的nltk。
另外,像http://Encoding.com這樣的超大型雲媒體服務商使之能與C語言系屬(C-family languages)兼容(https://www.encoding.com/blog/2013/11/26/like-json-api-now-supports-json/)。換句話說,這些庫能夠提供跨平台的支持,這是絕佳的便利。
5.Python可靠高效
詢問任何Python開發人員——或者任何曾經使用過這門語言的人——他們都會同意它是快速、可靠和高效的。你可以在幾乎所有的環境中使用和部署Python應用程序,並且不會隨平台變化而產生多少性能損失。
同樣,因為它是通用的,這也意味著你可以跨多個領域工作,包括但不限於Web開發、桌面應用程序、移動應用程序、硬體等等。
你不必被綁定到單一的平台或者領域,Python在任何地方都能夠提供相同的體驗。
6.Python是容易理解的
對於新手和初學者來說,Python是非常容易學習和使用的。事實上,它是最容易理解的編程語言之一。部分原因是(在設計的時候)簡化了語法和強調了自然語言,你也就能夠更快地編寫Python代碼並執行它。
不管怎樣,對初學者來說這是很好的語言,許多新開發人員都開始使用它了。更重要的是,經驗豐富的開發人員也並沒有半途而廢,因為使用Python還有那麼多可做的事情。
阿里雲通用產品優惠券,限量領取!
我也不知道神不神,直接看圖吧。(圖片來自quora的Ryan Lam)
推薦閱讀:
※編程的成就感,來自漂亮的代碼還是漂亮的功能?
※知乎的IT人多,多少人聽說過達內科技?
※如何提高計算機科學的邏輯能力?
※學編程真的好嗎?
※我的c學習是不是出問題了?