-
當前位置:首頁 > 創(chuàng)意學院 > 空間設計 > 專題列表 > 正文
為什么不建議學python(學python能干嘛)
大家好!今天讓創(chuàng)意嶺的小編來大家介紹下關于為什么不建議學python的問題,以下是小編對此問題的歸納整理,讓我們一起來看看吧。
創(chuàng)意嶺作為行業(yè)內優(yōu)秀企業(yè),服務客戶遍布全國,設計相關業(yè)務請撥打175-8598-2043,或微信:1454722008
本文目錄:
一、Python 在編程語言中是什么地位?為什么很多大學不教 Python?
作者看著網上各種數(shù)據分析的知識泛濫, 但是沒有什么體系,初學者不知道學哪些, 不知道學多少, 不知道學多深, 單純一個python語言, 數(shù)據分析會用到那種程度, 不可能說像開發(fā)那樣去學, numpy如果不是做算法工程師用到的知識并不多, pandas知識雜亂無章, 哪些才是最常用的功能等等, 作者不忍眾生皆苦, 決定寫一套python數(shù)據分析的全套教程, 目前已完成一部分課件的制作。需要說明的是, 作為一名數(shù)據分析師, 你應該先會一點Excel和SQL知識,相關的內容, 網上很多。但是, 即便你一點Excel和SQL都不會也不會影響這部分的學習 !目前作者整理的大綱如下:
第一章 python編程基礎
1.1 python語言概述 1.2 數(shù)據科學神器--Anaconda介紹與安裝 1.3 標準輸入輸出 1.4 變量定義與賦值 1.5 數(shù)據類型 1.6 流程控制語句 1.7 函數(shù)
1.8 面向對象編程 第二章 python數(shù)據清洗之numpy 2.1 核心ndarray對象的創(chuàng)建 2.2 ndarray對象常用的屬性和方法 2.3 ndarray對象的索引和切片 2.4 ndarray對象的分割與合并 2.5 ndarray對象的廣播(Broadcast) 2.6 numpy中的算術運算函數(shù) 2.7 numpy中的統(tǒng)計函數(shù) 2.8 numpy中的排序 搜索 計數(shù) 去重函數(shù) 2.9 numpy中的字符串函數(shù) 2.10 numpy中可能會用到的線性代數(shù)模塊(后期機器學習會用到一點)
第三章 數(shù)據清洗神器pandas
3.1 pandas核心對象之Series對象的創(chuàng)建 常用屬性和方法 3.2 pandas核心對象之DataFrame對象的創(chuàng)建 常用屬性和方法 3.3 DataFrame對象的列操作和行操作 3.4 DataFrame對象的索引和切片 3.5 DataFrame對象的布爾索引 3.6 數(shù)據的讀入與導出 3.7 groupby分組運算 3.8 數(shù)據合并與數(shù)據透視
第四章 數(shù)據可視化matplotlib seaborn pyecharts
4.1 包括常用圖形的繪制,略
第五章 實戰(zhàn)案列
5.1 拉勾網數(shù)據分析相關職位分析 5.2 boss直聘數(shù)據分析相關職位分析 5.3 珍愛網女性用戶數(shù)據分析
第六章 機器學習
機器學習部分, 簡單的算法會講手寫, 難的就用scikit-learn實現(xiàn), 可能有小伙伴說, 這是調包俠干的, 小哥哥!小姐姐!哪有那么多公司, 那么多人自己干寫算法的, 有幾個人敢說他寫的算法比scikit-learn寫得好? 再說了, 你是數(shù)據分析師, 這些是你的工具, 解決問題的!不是一天到晚拉格朗日對偶性!先來個機器學習介紹, 然后如下:
6.1 K近鄰算法 6.2 Kmeans算法 6.3 決策樹 階段案列:決策樹案列(保險行業(yè)) 6.4 線性回歸 嶺回歸 Lasso回歸 6.5 邏輯回歸 6.6 樸素貝葉斯 階段案列:推薦系統(tǒng)(電商玩具) 6.7 隨機森林 6.8 Adaboost 6.9 梯度提升樹GBDT 6.10 極端梯度提升樹Xgboost 6.11 支持向量機SVM 6.12 神經網絡 階段案例:Xgboost案例
------------------------------本節(jié)內容-----------------------------------------
python語言概述
在說python之前, 我們還是先來看看計算機軟硬件的發(fā)展歷史。
1 計算機硬件的發(fā)展歷史
第一代計算機-電子管計算機(1946-1957)
無論如何,一項技術的突破必然伴隨著其他行業(yè)的突破,簡而言之,電子計算機的出現(xiàn),前提必須有電子技術的進步,否則一切都是空談!下面是我列舉出計算機硬件的發(fā)展過程中, 一些比較重要的事件。
1906年, 美國的Lee De Forest 發(fā)明了電子管。在這之前造出數(shù)字電子計算機是不可能的。這為電子計算機的發(fā) 展奠定了基礎。
1924年2月, 一個具有劃時代意義的公司成立,IBM。
1935年, IBM推出IBM 601機。 這是一臺能在一秒鐘算出乘法的穿孔卡片計算機。這臺機器無論在自然科學還是在商業(yè)意義上都具有重要的地位。大約造了1500臺。
1937年, 英國劍橋大學的Alan M. Turing (1912-1954)出版了他的論文 ,并提出了被后人稱之為"圖靈機"的數(shù)學模型。
1937年, 美國貝爾試驗室的George Stibitz展示了用繼電器表示二進制的裝置。盡管僅僅是個展示品,但卻是世界上第一臺二進制電子計算機。
1941年, Atanasoff和學生Berry完成了能解線性代數(shù)方程的計算機,取名叫"ABC"(Atanasoff-Berry Computer),用電容作存儲器,用穿孔卡片作輔助存儲器,那些孔實際上是"燒"上的。 時鐘頻率是60HZ,完成一次加法運算用時一秒。這就是ABC計算機。
1946年, 美國賓夕法尼亞大學,第一臺通用電子計算機ENIAC (Electronic Numerical Integrator 和 Computer)誕生, 總工程師??颂卦诋敃r年僅25歲。
這時的計算機的基本線路是采用電子管結構,程序從人工手編的 機器指令程序(0 1),過渡到符號語言(匯編),電子管計算機是計算工具革命性發(fā)展的開始,它所采用的進位制與程序存貯等基本技術思想,奠定了現(xiàn)代電子計算機技術基礎。以馮·諾依曼為代表。
第二代計算機——晶體管計算機(時間1957~1964)
電子管時代的計算機盡管已經步入了現(xiàn)代計算機的范疇,但其體積之大、能耗之高、故障之多、價格之貴大大制約了它的普及應用。直到晶體管被發(fā)明出來,電子計算機才找到了騰飛的起點,一發(fā)而不可收……
20世紀50年代中期,晶體管的出現(xiàn)使計算機生產技術得到了根本性的發(fā)展,由晶體管代替電子管作為計算機的基礎器件,用 磁芯或磁鼓作存儲器,在整體性能上,比第一代計算機有了很大的提高。
第三代計算機——中小規(guī)模集成電路計算機(時間1964~1971)
20世紀60年代中期, 計算機發(fā)展歷程隨著半導體工藝的發(fā)展,成功制造了集成電路。中小規(guī)模集成電路成為計算機的主要部件,主存儲器也漸漸過渡到 半導體存儲器,使計算機的體積更小,大大降低了計算機計算時的功耗,由于減少了 焊點和 接插件,進一步提高了計算機的可靠性。
第四代計算機——大規(guī)模和超大規(guī)模集成電路計算機(時間1971~至今)
隨著大規(guī)模集成電路的成功制作并用于計算機硬件生產過程,計算機的體積進一步縮小,性能進一步提高。集成更高的大容量半導體存儲器作為內存儲器,發(fā)展了并行技術和多機系統(tǒng),出現(xiàn)了 精簡指令集計算機(RISC),軟件系統(tǒng)工程化、理論化,程序設計自動化。微型計算機在社會上的應用范圍進一步擴大,幾乎所有領域都能看到計算機的“身影”。
第五代計算機——泛指具有人工智能的計算機(至今~未來)
目前還沒有明確地定義
2 簡述計算機軟件的發(fā)展歷史
編程語言的發(fā)展
計算機軟件系統(tǒng)的發(fā)展,也伴隨著編程語言的發(fā)展。計算機程序設計語言的發(fā)展,經歷了從機器語言、匯編語言到高級語言的歷程。
機器語言:簡單點說,機器本身也只認識0和1,電路無非就只有通和斷兩種狀態(tài),對應的二進制就是二進制的1和1。
匯編語言:匯編語言只是把一些特殊的二進制用特殊的符號表示,例如,機器要傳送一個數(shù)據,假設“傳送”這個指令對應的機器碼是000101,則人們把000101用一個特殊符號,比如mov來表示,當人們要用這個指令時用mov就行,但是mov的本質還是000101,沒有脫離硬件的范圍,有可能這個指令不能在其他機器上用。
高級語言:高級語言完全脫離了硬件范疇,所有的語法更貼近人類的自然語言,人們只需要清楚高級語言的語法,寫出程序就行了,剩下的交給編譯器或者解釋器去編譯或者解釋成機器語言就行了,看,這樣就完全脫離了硬件的范疇,大大提高了程序的開發(fā)效率。接下來我們就來看看高級語言的發(fā)展,高級語言非常多,我們主要看看比較經典的幾個。
高級語言的發(fā)展
B語言與Unix
20世紀60年代,貝爾實驗室的研究員Ken Thompson(肯·湯普森)發(fā)明了B語言,并使用B編了個游戲 - Space Travel,他想玩自己這個游戲,所以他背著老板找到了臺空閑的機器 - PDP-7,但是這臺機器沒有操作系統(tǒng),于是Thompson著手為PDP-7開發(fā)操作系統(tǒng),后來這個OS被命名為 - UNIX。
C語言
1971年,Ken Thompson(肯·湯普森)的同事D.M.Ritchie(DM里奇),也很想玩Space Travel,所以加入了Ken Thompson,合作開發(fā)UNIX,他的主要工作是改進Thompson的B語言。最終,在1972年這個新語言被稱為C,取BCPL的第二個字母,也是B的下一個字母。
C語言和Unix
1973年,C主體完成。Ken Thompson和D.M.Ritchie迫不及待的開始用C語言完全重寫了UNIX。此時編程的樂趣已經使他們完全忘記了那個“Space Travel”,一門心思的投入到了UNIX和C語言的開發(fā)中。自此,C語言和UNIX相輔相成的發(fā)展至今。
類C語言起源、歷史
C++(C plus plus Programming Language) - 1983
還是貝爾實驗室的人,Bjarne Stroustrup(本賈尼·斯特勞斯特盧普) 在C語言的基礎上推出了C++,它擴充和完善了C語言,特別是在面向對象編程方面。一定程度上克服了C語言編寫大型程序時的不足。
Python (Python Programming Language)--1991
1989年圣誕節(jié)期間,Guido van Rossum 在阿姆斯特丹,Guido van Rossum為了打發(fā)圣誕節(jié)的無趣,決心開發(fā)一個新的腳本解釋程序,做為ABC語言的一種繼承。之所以選中Python(大蟒蛇的意思)作為該編程語言的名字,是因為他是一個叫Monty Python的喜劇團體的愛好者。第一個Python的版本發(fā)布于1991年。
Java(Java Programming Language) - 1995
Sun公司的Patrick Naughton的工作小組研發(fā)了Java語言,主要成員是James Gosling(詹姆斯·高斯林)
C(C Sharp Programming Language) - 2000
Microsoft公司的Anders Hejlsberg(安德斯·海爾斯伯格)發(fā)明了C,他也是Delphi語言之父。
當然現(xiàn)在還有一些新語言,比如2009年Google的go語言,以及麻省理工的julia等。
3 為什么是Python
Python有哪些優(yōu)點
1 語法簡單 漂亮:我們可以說Python是簡約的語言,非常易于讀寫。在遇到問題時,我們可以把更多的注意力放在問題本身上,而不用花費太多精力在程序語言、語法上。
2 豐富而免費的庫:Python社區(qū)創(chuàng)造了各種各樣的Python庫。在他們的幫助下,你可以管理文檔,執(zhí)行單元測試、數(shù)據庫、web瀏覽器、電子郵件、密碼學、圖形用戶界面和更多的東西。所有東西包括在標準庫,然而,除了它,還有很多其他的庫。
3 開源:Python是免費開源的。這意味著我們不用花錢,就可以共享、復制和交換它,這也幫助Python形成了豐富的社區(qū)資源,使其更加完善,技術發(fā)展更快。
4 Python既支持面向過程,也支持面向對象編程。在面向過程編程中,程序員復用代碼,在面向對象編程中,使用基于數(shù)據和函數(shù)的對象。盡管面向對象的程序語言通常十分復雜,Python卻設法保持簡潔。
5 Python兼容眾多平臺,所以開發(fā)者不會遇到使用其他語言時常會遇到的困擾。
Python有哪些作用
Python是什么都能做,但是我們學的是數(shù)據分析,我們看看在數(shù)據分析領域Python能做什么。
數(shù)據采集:以Scrapy 為代表的各類方式的爬蟲
數(shù)據鏈接:Python有大量各類數(shù)據庫的第三方包,方便快速的實現(xiàn)增刪改查
數(shù)據清洗:Numpy、Pandas,結構化和非結構化的數(shù)據清洗及數(shù)據規(guī)整化的利器
數(shù)據分析:Scikit-Learn、Scipy,統(tǒng)計分析,科學計算、建模等
數(shù)據可視化:Matplotlib、Seaborn等等大量各類可視化的庫
所以說總結, 為什么數(shù)據科學選的是python, 最重要就是兩個原因:
1 語法簡單漂亮
2 大量豐富免費的第三方庫
二、Python 在編程語言中是什么地位?為什么很多大學不教 Python?
十分想炮轟一下,所謂「大學學習的基本設計思想,老師教授一兩張語言即可,關鍵自己得去鉆研,看自己喜歡什么就去多看多練習多鉆研才可以」根本就站不住腳。首先,既然是教授一兩門語言,為何這門語言是C而不是python?教授什么語言,跟你怎么才能把計算機語言寫好跟你要鉆研,完全就是兩回事。(我并不否認強調學習要有鉆研的精神,我十分認同在沒有其他辦法的情況下用這種論調來自我安慰,但是認為鉆研的精神最重要,學習什么東西不重要,并不是一個讓人停止思考的好答案)從國內的計算機科學教育來看,「計算機語言」(Computer Language)其實從來沒有獲得很高的地位,在認知上就沒有真正把計算機語言拉到一個較高的級別來看,相反的,可能還有鄙視代碼,覺得語言只是知識的底層,不是上臺面有得研究的東西。出現(xiàn)這種情況的原因我不大清楚,反正我身邊很多的老師其實都是平時跑跑算法就行了——用自己用熟的C來跑,完全足夠了。如果你的代碼只是用來演示一個小程序的算法,實際上就是一個偽代碼到可以編譯的代碼的轉變,其實真的是沒有多大區(qū)別了。想想哪些老師在教計算機語言?基本都是教數(shù)據結構啊、算法啊之類的拉過來客串一下,這些老師往往沒有面對復雜的系統(tǒng)的經驗,也沒有對一個有表達力的語言的需求在。而計算機語言的區(qū)別,所謂的表達力,優(yōu)雅,抽象的角度,思維,全部都不是可以發(fā)到paper的東西,都是確確實實需要將語言工具用于應用和抽象才能體會到的。老師實際上一無使用一門好的語言的需求,二也很少做這些研究的。計算機語言被拆成了很多門課,從語言、抽象和設計的角度來觀察語言本身,大學應該是沒有這種課程的。以我們學院來說,程序設計1根本就不是教程序設計,就是一個充水的C語言參考指導,程序設計2也不是教程序設計,就是一個充水的C++語言參考順便教你用C++的OO語法來實現(xiàn)點數(shù)據結構和算法。你真正使用計算機語言是因為你要寫數(shù)據結構和算法的作業(yè)。然后呢?因為要學計組你才需要學點匯編,一些老師可能對編程語言最大的體會是win32寫個貪吃蛇。然后等到你大三了你學「編譯原理」的時候是教你如何實現(xiàn)一個編譯器(而不是如何設計一門語言,用語言來思考和抽象)。大學既不是專才教育,也不是通才教育。大學是基本能力教育,它只有義務教會大多數(shù)學生在他專業(yè)領域中的基本能力。這句話本沒有錯,但是這句模糊的話,實際上卻成為了放棄一個更好的選擇的托詞。大學當然不是專才教育,大學是基本能力教育也沒有錯,但是,使用C一定是掌握基本能力的最好選擇嗎?上面扯的「python不夠clean」,「Python 的集成性并不比 C 好」也站不住腳。python在大部分情況下都比C要clean多了吧。。。大學教育哪里會在乎你的集成性。大家用 Python 是因為它的資源能夠幫助很多人解決問題,這個大致我也認同。但是,python除了類庫豐富,還是有很多好東西的。從語言上看,python遠遠比C更適合教學啊。比如,python會讓你的 1 < a < 2 是對的,不會讓你栽入C的所謂的 (1<a) 是一個布爾值,然后跟2比較——這種設計真的是對的嗎?人類真的就應該遷就這種設計嗎?然后不要說 scanf("%d", &a) 這個a前面要加&這種了。你不是在學習程序語言設計,你是在學習如何躲開C的坑。。。好吧,你說學習C可以了解底層——你確認要在程序語言設計的課程里面來學習計算機底層真的很有意義而且值得堅持?新人如果真的要學計算機語言的話,還是跟著MIT從python開始吧。不推薦C、不推薦C++、不推薦javascript、不推薦haskell、不推薦匯編、不推薦ruby,啃的下的可以試試看SICP里面的scheme,不然python也是個不錯的選擇。然后,C和C++一定要學好。。。haskell、lisp這些FP也挺有趣的可以看看。。。。不要挑熱門的,不要挑應用廣泛的,挑真的適合學習,能夠啟發(fā)你看到本質的。ps:據說我院大三有門專選是python,然后還有haskell這種專選。了解了課程設計的動機和目的,其實這些都挺自然的。
三、為什么學不好Python
1. Python 易于學習
好吧,相較于其它許多你可以拿來用的編程語言而言,它“更容易一些”。Python
的語言沒有多少儀式化的東西,所以就算不是一個 Python 專家,你也能讀懂它的代碼。我的經驗是,通過實例來學習和教授 Python
要比采取同樣的方式去接觸比方說 Ruby 或者 Perl 更加容易,因為 Python 的語法里面條條框框以及特殊的處理場景要少得多。
它所專注的并非語言表現(xiàn)的豐富程度,而是你想要用你的代碼完成什么。
2. Python 讓你能用少量的代碼構建出更多的功能
Python 能帶給所有開發(fā)者一種快速的學習體驗。通過實踐,你可以在最多兩天之內輕松實現(xiàn)一個具備基礎功能的游戲 (而這還是在對編程完全不了解的情況下)。
另外一些讓 Python 成為一門引人注目的編程語言的因素就是它的可讀性和高效性。
3. Python 是一門多才多藝的語言,更是一個平臺
盡管它比我的許多讀者年紀還要大,但是仍然受到高度的關注,因為它可以被應用于如今你所能想得到的相當多的軟件開發(fā)和操作場景。要管理本地或者云基礎設施嗎?Python可以。開發(fā)網站OK,它也能行的。需要處理一個
SQL 數(shù)據庫?可以。需要為 Hive 或者 Pig 定制一個功能?能做到。只是想為自己構建一個小工具,Python
就是最好的選擇。需要一門支持面向對象設計的語言,Python 的特性就能滿足啦。簡而言之,將 Python
了解得更加深入一點點,就能讓你具備可以適應范圍更寬泛的工作角色的技能。
四、如何看待《笨辦法學python》第三版不建議學python3
最好學習 Python3 。因為你3轉2很容易,而且可以早早避免編碼等初學者會踩的坑。等到實在需要 Python2 的包時在轉2也不遲。
關鍵是一定要用 Python3 成功入門。
注意用 Python3 不要猶豫
注意要入門 不要看書半途而非
注意最好用 「Python學習手冊」 這本書, 看完。
回頭看看笨方法,這個系列就是垃圾,又臭又長,示例弱智,內容淺薄。
不能否認對于時間的初級學習者來說還是有用的,但對于有一定基礎和想快速深入了解的人來說,太坑爹。
這么看來,蕭大說的有道理,只有 「Python 學習手冊」是唯一的可用的參考書了…哈哈
以上就是關于為什么不建議學python相關問題的回答。希望能幫到你,如有更多相關問題,您也可以聯(lián)系我們的客服進行咨詢,客服也會為您講解更多精彩的知識和內容。
推薦閱讀:
一緊張就全身發(fā)抖怎么回事(為什么會緊張發(fā)抖不受控制)