關(guān)于我們
書單推薦
新書推薦
|
Python大學(xué)教程:面向計算機科學(xué)和數(shù)據(jù)科學(xué)(英文版) 通過本書,你將學(xué)習(xí): 平衡計算機科學(xué)基礎(chǔ)知識的教學(xué)和數(shù)據(jù)科學(xué)技術(shù)的實踐,在大量程序庫的支持下僅編寫少量代碼即可完成實際任務(wù) 前 言 “塔爾山上有黃金!1 在過去的幾十年中,很多發(fā)展趨勢一一顯現(xiàn)。計算機的硬件速度越來越快,價格越來越便宜,尺寸越來越小。網(wǎng)絡(luò)帶寬(攜帶信息的能力)越來越大,價格越來越便宜。同時軟件規(guī)模越來越龐大,而“開源”運動又將它們變成完全免費或者接近免費。短時間內(nèi),“物聯(lián)網(wǎng)”將數(shù)十億各種各樣的設(shè)備連接起來,并快速產(chǎn)生了大規(guī)模的數(shù)據(jù)。 幾年之前,如果有人讓我們寫一本主題為“大數(shù)據(jù)”和“云計算”的大學(xué)階段編程入門教材,并且在封面上繪制一只彩色的大象(象征“巨大”),我們可能會如此反應(yīng):“嗯?”如果他們繼續(xù)讓我們在書名中囊括AI(人工智能),我們可能會說:“真的嗎?這對于編程初學(xué)者會不會過于超前了?” 如果有人讓我們在書名中加上“數(shù)據(jù)科學(xué)”,我們可能會問:“計算機科學(xué)不是已經(jīng)包含了數(shù)據(jù)嗎?為什么我們需要為此單獨分一個科目?”好吧,如今談及程序設(shè)計,最酷的說法就是“什么都是數(shù)據(jù)”—數(shù)據(jù)科學(xué)、數(shù)據(jù)分析、大數(shù)據(jù)、關(guān)系數(shù)據(jù)庫(SQL)以及NoSQL和NewSQL數(shù)據(jù)庫。 如今我們真的寫了這樣一本書!歡迎閱讀! 在本書中,你將會著手學(xué)習(xí)當(dāng)今最引人入勝、最前沿的計算技術(shù)—你將會看到,它將計算機科學(xué)和數(shù)據(jù)科學(xué)輕松地結(jié)合在一起,是一門適用于這些學(xué)科和相關(guān)學(xué)科的入門課程。此外,你將使用Python進行編程—世界上發(fā)展速度最快、最流行的編程語言之一。在前言中,我們將展示這本書的“靈魂”。 專業(yè)程序員常常很快喜歡上Python。他們欣賞Python的表現(xiàn)力、易讀性、簡潔性和交互性。他們喜歡開源軟件世界,這個世界正在為廣泛的應(yīng)用領(lǐng)域不斷生成可復(fù)用的軟件。 無論你是教師、初學(xué)者或者有經(jīng)驗的專業(yè)人士,這本書都將對你有所幫助。Python對于初學(xué)者而言是優(yōu)秀的第一門編程語言,并且適用于開發(fā)工業(yè)級的應(yīng)用。對于新人而言,本書前面的章節(jié)奠定了堅實的編程基礎(chǔ)。 我們希望你在這本書中學(xué)到知識,并且發(fā)現(xiàn)快樂與挑戰(zhàn)。徜徉其中,享受樂趣。 將Python用于計算機科學(xué)和數(shù)據(jù)科學(xué)教學(xué) 許多頂尖的美國大學(xué)使用Python作為介紹計算機科學(xué)的語言,“CS學(xué)科排名前10的有8個(80%)、排名前39的有27個(69%)使用Python”2。Python如今在教學(xué)和科學(xué)計算中尤其受到歡迎3,最近已超過R語言并成為最受歡迎的數(shù)據(jù)科學(xué)編程語言4,5,6。 模塊化體系結(jié)構(gòu) 我們預(yù)計計算機科學(xué)的本科生課程將會包含數(shù)據(jù)科學(xué)部分—這本書為此而設(shè)計,并且在Python編程方面滿足數(shù)據(jù)科學(xué)入門課程的需求。 本書的模塊化體系結(jié)構(gòu)幫助我們滿足計算機科學(xué)、數(shù)據(jù)科學(xué)和其他相關(guān)受眾的多樣化需求。教師能方便地進行調(diào)整,為不同專業(yè)的學(xué)生開設(shè)系列課程。 第1~11章介紹傳統(tǒng)的計算機科學(xué)編程主題。第1~10章每章都包含可選的、簡潔的“數(shù)據(jù)科學(xué)入門”一節(jié),介紹人工智能、基礎(chǔ)統(tǒng)計、趨中和離中度量、模擬、靜態(tài)/動態(tài)可視化、CSV文件的使用、數(shù)據(jù)探索和數(shù)據(jù)整理的pandas庫、時間序列和簡單的線性回歸。這會幫助你學(xué)習(xí)第12~17章中的數(shù)據(jù)科學(xué)、AI、大數(shù)據(jù)和云計算相關(guān)的案例研究,你能在真實世界數(shù)據(jù)集中完整地使用這些案例研究。 學(xué)完第1~5章中的Python相關(guān)知識以及第6~7章中的一些關(guān)鍵部分,你已經(jīng)能夠在第12~17章中解決數(shù)據(jù)科學(xué)、AI和大數(shù)據(jù)案例研究中的關(guān)鍵用例,這對于所有的編程通識課都是實用的: 計算機科學(xué)方面的課程可以著重于第1~11章并略講第1~10章的“數(shù)據(jù)科學(xué)入門”部分。教師還可以介紹第12~17章中的部分或者全部案例研究。 數(shù)據(jù)科學(xué)方面的課程可以略講第1~11章,著重于大部分或者全部的第1~10章中的“數(shù)據(jù)科學(xué)入門”部分以及第12~17章中的案例研究。 前言中的“章節(jié)依賴關(guān)系”部分將展示本書的獨特架構(gòu)并幫助教師規(guī)劃個性化的教學(xué)大綱。 第12~17章的內(nèi)容很酷、很強大、很現(xiàn)代。其中包含能動手實現(xiàn)的案例研究,例如有監(jiān)督學(xué)習(xí)、無監(jiān)督學(xué)習(xí)、深度學(xué)習(xí)、強化學(xué)習(xí)(在習(xí)題中)、自然語言處理、Twitter數(shù)據(jù)挖掘、IBM Watson可視化計算、大數(shù)據(jù)以及其他內(nèi)容。在這個過程中,你將會掌握數(shù)據(jù)科學(xué)的大量術(shù)語和概念,包括術(shù)語的定義以及在不同規(guī)模的程序中使用的概念。 本書讀者對象 模塊化的結(jié)構(gòu)使得本書適用于以下讀者: 所有標準的Python計算機科學(xué)及相關(guān)專業(yè)。首先,我們的書是一本現(xiàn)代的、可靠的Python CS1入門教材。ACM/IEEE的計算課程建議列出了5個類別:計算機工程、計算機科學(xué)、信息系統(tǒng)、信息技術(shù)和軟件工程7。這本書對這些類別都適用。 數(shù)據(jù)科學(xué)專業(yè)的本科生課程。我們的書對許多數(shù)據(jù)科學(xué)課程都是有用的。對于入門級課程而言,它遵循課程建議,整合了所有課程的關(guān)鍵領(lǐng)域。在計算機科學(xué)或者數(shù)據(jù)科學(xué)課程計劃中,本書都可以作為第一本專業(yè)教材,也可用作高年級課程的Python參考書。 非計算機和數(shù)據(jù)科學(xué)專業(yè)學(xué)生的輔修課程。 數(shù)據(jù)科學(xué)的研究生課程。這本書可以作為入門級課程的主要教材,也可以作為高年級課程的Python參考書。 兩年制學(xué)院。這些學(xué)校會為準備進入四年制學(xué)院的數(shù)據(jù)科學(xué)專業(yè)的學(xué)生開設(shè)相關(guān)課程—這本書就是一個合適的選擇。 高中。就像出于強烈的興趣愛好而開設(shè)計算機課程一樣,很多高中已經(jīng)開設(shè)了Python編程和數(shù)據(jù)科學(xué)課程8。最近在LinkedIn上發(fā)表的一篇文章寫道:“高中就應(yīng)該教授數(shù)據(jù)科學(xué),課程應(yīng)該直面我們的學(xué)生將要選擇的職業(yè)類型,直接關(guān)注工作和技術(shù)的發(fā)展方向。”9我們相信數(shù)據(jù)科學(xué)很快就會成為一門受歡迎的大學(xué)先修課程并且最終會有數(shù)據(jù)科學(xué)的AP考試。 專業(yè)行業(yè)培訓(xùn)課程。 本書主要特色 保持簡潔,保持短小,保持新穎 保持簡潔(KIS)。在書的各個方面以及教師和學(xué)生資源中,我們都力求簡單明了。例如,在寫自然語言處理的時候,我們使用了簡潔直觀的TextBlob庫而不是更為復(fù)雜的NLTK。一般情況下,當(dāng)有多個庫都能完成相近的任務(wù)時,我們選擇最簡單的一個。 保持短小(KIS)。本書的538個案例研究中大多數(shù)都很短小—伴隨交互式IPython的即時反饋,通常只有幾行代碼。我們大約只在40個大型腳本和完整案例研究中使用了較長的代碼示例。 保持新穎(KIT)。我們查閱了大量最新的Python編程和數(shù)據(jù)科學(xué)教材以及專業(yè)書籍,瀏覽、閱讀或者觀看了大約15 000篇最新的文獻、研究論文、白皮書、視頻、博客文章、論壇文章和文檔。這讓我們能夠“把握”Python、計算機科學(xué)、數(shù)據(jù)科學(xué)、AI、大數(shù)據(jù)和云計算社區(qū)的脈搏,從而創(chuàng)建出1566個嶄新的案例研究、習(xí)題和項目(EEP)。 IPython的實時反饋、搜索、發(fā)現(xiàn)和實驗教學(xué)方法 學(xué)習(xí)這本書的理想方法是閱讀它并同時運行代碼示例。在整本書中,我們使用了IPython解釋器,它采用一種友好的、實時反饋的模式,能夠在Python及其擴展庫上快速進行搜索、發(fā)現(xiàn)和實驗。 大多數(shù)代碼都在小型的可交互的IPython會話中展示。你所寫的每一個代碼片段,IPython能夠立即讀取然后計算并給出結(jié)果。這種即時反饋使你保持注意力,并助力學(xué)習(xí)過程、支撐原型設(shè)計和加速軟件開發(fā)過程。 我們的書總是強調(diào)現(xiàn)場代碼的教學(xué)方法,通過樣例輸入和結(jié)果顯示,專注于程序的完整和可運行。IPython的“魔力”在于將代碼片段轉(zhuǎn)換為實時代碼,每當(dāng)你輸入一行時,這些代碼就會“活起來”。這有助于學(xué)習(xí)并鼓勵動手實驗。 IPython是學(xué)習(xí)常見錯誤的報錯信息的好方法。我們有時故意犯錯來告知你將發(fā)生什么,因此,當(dāng)我們說某件事是錯誤的時候,試試看會發(fā)生什么。 本書配有557道自檢習(xí)題(適合于“翻轉(zhuǎn)課堂”,稍后介紹)和471個章末習(xí)題和項目,它們中的大多數(shù)遵循了同樣的實時反饋理念。 Python編程基礎(chǔ) 首先,本書是一本Python入門教材。我們提供了豐富的Python編程知識和常規(guī)的編程基礎(chǔ)內(nèi)容。 我們討論了Python的編程模型—過程式編程、函數(shù)式編程和面向?qū)ο缶幊獭?/p> 我們強調(diào)解決問題和算法設(shè)計。 我們?yōu)闇蕚溥M入產(chǎn)業(yè)界的學(xué)生準備了最好的習(xí)題。 函數(shù)式編程貫穿全書。第4章中的一個圖表展示了Python中關(guān)鍵的函數(shù)式編程能力及其對應(yīng)的章節(jié)。 538個案例研究以及471個習(xí)題和項目 學(xué)生通過動手實踐的方法,在廣泛選擇的真實世界案例研究、習(xí)題和項目(EEP)中開展學(xué)習(xí),這些內(nèi)容來自計算機科學(xué)、數(shù)據(jù)科學(xué)和其他很多領(lǐng)域。 538個案例研究的內(nèi)容均圍繞計算機科學(xué)、數(shù)據(jù)科學(xué)、人工智能和大數(shù)據(jù),從單個代碼片段到完整案例研究均有涉及。 471個習(xí)題和項目自然地拓展了章節(jié)中的示例。每章都以一系列涵蓋了各種主題的習(xí)題作為結(jié)尾,這有助于教師根據(jù)受眾的需求調(diào)整課程內(nèi)容并且在每個學(xué)期布置不同的作業(yè)。 EEP向你提供了引人入勝的、富有挑戰(zhàn)性的、有趣的Python基礎(chǔ)知識,包括可以上手實驗的AI、計算機科學(xué)和數(shù)據(jù)科學(xué)項目。 學(xué)生將面對令人興奮且有趣的有關(guān)AI、大數(shù)據(jù)和云技術(shù)應(yīng)用問題的挑戰(zhàn),比如自然語言處理、Twitter數(shù)據(jù)挖掘、機器學(xué)習(xí)、深度學(xué)習(xí)、Hadoop、MapReduce、Spark、IBM Watson、關(guān)鍵的數(shù)據(jù)科學(xué)庫(NumPy、pandas、SciPy、NLTK、TextBlob、spaCy、BeautifulSoup、Textatistic、Tweepy、Scikit-learn、Keras)、關(guān)鍵的可視化庫(Matplotlib、Seaborn、Folium)以及其他。 我們的EEP鼓勵你思考未來。下述案例研究雖然只出現(xiàn)在前言中,但本書包含了多個發(fā)人深省的類似項目:利用深度學(xué)習(xí)、物聯(lián)網(wǎng)以及電視攝像機(由體育賽事數(shù)據(jù)訓(xùn)練出來的),我們可以自動進行數(shù)據(jù)分析、回顧比賽細節(jié)以及即時回放,因此球迷不再需要忍受直播體育賽事的誤判和延遲。既然如此,我們可能會產(chǎn)生這樣的想法:可以使用這些技術(shù)來取消裁判。為什么不呢?我們已經(jīng)越來越多地把自己的生命托付給基于深度學(xué)習(xí)的技術(shù),比如機器人外科醫(yī)生和自動駕駛汽車。 項目習(xí)題鼓勵你更加深入地了解所學(xué)的知識并研究本書沒有涉及的技術(shù)。真正的項目通常規(guī)模更大,需要更多的網(wǎng)絡(luò)搜索和實現(xiàn)代價。 在教師手冊中,我們提供了許多習(xí)題的答案,包括第1~11章中核心的Python代碼。答案僅對教師可見,詳見后文中關(guān)于Pearson教師資源的介紹。我們沒有提供項目和研究習(xí)題的答案。 我們鼓勵你仔細觀看示例和開源代碼案例研究(詳見GitHub網(wǎng)頁),包括課程級別項目、學(xué)期級別項目、專業(yè)方向級別項目、畢業(yè)設(shè)計項目和畢業(yè)論文。 557道自檢習(xí)題及其答案 平均每個小節(jié)后有三道自檢習(xí)題。 自檢習(xí)題的類型包括填空、判斷和討論,能幫你測試是否理解了所學(xué)的內(nèi)容。 IPython交互式自檢習(xí)題可幫助你不斷嘗試并強化所學(xué)的編程技術(shù)。 為快速掌握所學(xué)知識,自檢習(xí)題后面都跟有答案。 避免煩瑣的數(shù)學(xué)語言,多用自然語言進行解釋 數(shù)據(jù)科學(xué)的主題與數(shù)學(xué)高度相關(guān)。這本書將用作計算機科學(xué)和數(shù)據(jù)科學(xué)第一門課的教科書,學(xué)生可能沒有深厚的數(shù)學(xué)知識背景,所以我們避免了煩瑣的數(shù)學(xué)語言,把數(shù)學(xué)內(nèi)容留在高層次的課程中。 在案例研究、習(xí)題和項目中,我們關(guān)注數(shù)學(xué)的概念而不是細節(jié)。我們使用statistics、NumPy、SciPy、pandas等Python庫和其他的很多庫來解決問題,從而隱藏了數(shù)學(xué)復(fù)雜性。所以,學(xué)生能夠直接使用數(shù)學(xué)技術(shù)(如線性回歸),而不需要知道背后的數(shù)學(xué)知識。在機器學(xué)習(xí)和深度學(xué)習(xí)的案例研究中,我們專注于創(chuàng)建在“幕后”做數(shù)學(xué)運算的對象—這是基于對象編程的關(guān)鍵之一。這個做法等同于安全地駕駛一輛汽車前往目的地時不需要知道制造引擎、變速箱、動力轉(zhuǎn)向和防滑剎車系統(tǒng)背后的數(shù)學(xué)、工程和科學(xué)知識。 可視化 67張可視化結(jié)果圖幫助你理解概念,包含二維或三維的、靜態(tài)的、動態(tài)的、動畫的和交互式的圖表、圖形、圖片、動畫等。 我們關(guān)注由Matplotlib、Seaborn、pandas和Folium(用于交互式地圖)產(chǎn)生的高層可視化結(jié)果。 我們使用可視化作為教學(xué)工具。例如,我們使用動態(tài)滾壓模型和柱狀圖使大數(shù)定律“鮮活”起來。隨著滾動數(shù)量的增加,你將看到每個面在滾動總數(shù)中所占的百分比逐漸接近16.667%(1/6),代表百分比的柱條也趨于一致。 你需要了解自己的數(shù)據(jù)。一種簡單的辦法是直接看原始數(shù)據(jù)。即使是少量的數(shù)據(jù),你也可能很快迷失在細節(jié)當(dāng)中。對于大數(shù)據(jù)而言,可視化對于數(shù)據(jù)探索和傳遞可復(fù)制的研究結(jié)果尤為重要,數(shù)據(jù)規(guī)?赡苁前偃f級的、上億的甚至更為龐大。通常而言,一圖勝千言10—在大數(shù)據(jù)中,一個可視化結(jié)果能夠比得上數(shù)據(jù)庫中數(shù)億甚至更多的個體。 有時候,你需要“飛到離數(shù)據(jù)40 000英尺高”才能在“大范圍”看到它。描述性統(tǒng)計當(dāng)然有幫助,但是也可能產(chǎn)生誤導(dǎo)。你將在習(xí)題中研究Anscombe四重奏,這個案例研究通過可視化直觀地表明:差異顯著的數(shù)據(jù)集可能產(chǎn)生幾乎相同的描述性統(tǒng)計。 我們展示了可視化結(jié)果和動畫代碼以便你能夠自己實現(xiàn)。我們也通過Jupyter Notebook的形式給出動畫的源代碼文件,便于你自定義代碼和動畫參數(shù),進而重新執(zhí)行動畫,然后查看其帶來的影響。 許多習(xí)題都要求你創(chuàng)建自己的可視化結(jié)果。 數(shù)據(jù)經(jīng)驗 “數(shù)據(jù)科學(xué)本科課程建議”中提出:“數(shù)據(jù)經(jīng)驗需要在所有課程中扮演核心角色。”11 在本書的案例研究、習(xí)題和項目中,你將使用許多真實世界數(shù)據(jù)集和數(shù)據(jù)源。網(wǎng)上有各種免費的開源數(shù)據(jù)集供你實驗。有些我們參考的網(wǎng)站列出很多數(shù)據(jù)集,我們鼓勵你探索這些數(shù)據(jù)集。 我們收集了上百份教學(xué)大綱,追蹤了教師的數(shù)據(jù)集偏好,并研究了最流行的監(jiān)督機器學(xué)習(xí)、無監(jiān)督機器學(xué)習(xí)和深度學(xué)習(xí)的數(shù)據(jù)集。你將會使用到的許多庫都附帶用于實驗的標準數(shù)據(jù)集。 你將學(xué)習(xí)如何進行數(shù)據(jù)獲取和分析準備,學(xué)習(xí)使用多種技術(shù)進行數(shù)據(jù)分析、模型調(diào)整并有效交流結(jié)果,特別是通過可視化。 像開發(fā)者一樣思考 你將以開發(fā)者為視角,使用像GitHub和StackOverflow一樣的流行網(wǎng)站并且進行大量互聯(lián)網(wǎng)搜索!皵(shù)據(jù)科學(xué)入門”部分和第12~17章中的案例研究提供了豐富的數(shù)據(jù)經(jīng)驗。 GitHub為尋找開源代碼提供了一個優(yōu)秀的場所,你可以把代碼合并到自己的項目中(并將你的代碼貢獻到開源社區(qū)中)。它是軟件開發(fā)者版本控制工具庫中的重要組成部分,這些工具幫助開發(fā)團隊管理他們的開源(和私有)項目。 我們鼓勵你學(xué)習(xí)GitHub等網(wǎng)站上發(fā)布的代碼。 在為計算機科學(xué)和數(shù)據(jù)科學(xué)的職業(yè)生涯做準備的過程中,你將大量使用免費且開源的Python和數(shù)據(jù)科學(xué)庫,來自政府、工業(yè)界和學(xué)術(shù)界的真實世界數(shù)據(jù)集,以及免費、免費試用或免費增值的軟件和云服務(wù)。 動手實踐云計算 很多大數(shù)據(jù)分析發(fā)生在云端。在云端動態(tài)地度量你的應(yīng)用程序需要的硬件和軟件規(guī)模是比較容易的。你將會使用各種各樣的云服務(wù)(某些是直接的,某些是間接的),包括Twitter、Google翻譯、IBM Watson、Microsoft Azure、OpenMapQuest、geopy、Dweet.io 和 PubNub。你將在習(xí)題和項目中了解更多。 我們鼓勵你使用各種云服務(wù)供應(yīng)商提供的免費、免費試用或免費增值的服務(wù)。我們更喜歡那些不需要信用卡的,因為誰都不想冒意外地積攢巨額賬單的風(fēng)險。如果你決定使用需要信用卡的服務(wù),確保你使用的免費層不會自動跳轉(zhuǎn)到支付層。 數(shù)據(jù)庫、大數(shù)據(jù)和大數(shù)據(jù)基礎(chǔ)設(shè)施 根據(jù)IBM(2016年11月)的數(shù)據(jù),全球90%的數(shù)據(jù)是在過去的兩年內(nèi)產(chǎn)生的12。有證據(jù)表明,數(shù)據(jù)產(chǎn)生的速度正在加快。 根據(jù)2016年3月Analytics Week的一篇文章,五年內(nèi)將有超過500億臺設(shè)備連接到互聯(lián)網(wǎng),到2020年前,我們將每秒為地球上的每一個人產(chǎn)生1.7兆字節(jié)的新數(shù)據(jù)13! 本書包含了對關(guān)系數(shù)據(jù)庫和帶有SQLite的SQL的探討,感興趣的讀者可以選擇閱讀。 數(shù)據(jù)庫是存儲和操作你要處理的大量數(shù)據(jù)的關(guān)鍵性大數(shù)據(jù)基礎(chǔ)設(shè)施。關(guān)系數(shù)據(jù)庫處理結(jié)構(gòu)化數(shù)據(jù),它們不適用于大數(shù)據(jù)應(yīng)用程序中的非結(jié)構(gòu)化和半結(jié)構(gòu)化數(shù)據(jù)。因此,隨著大數(shù)據(jù)的發(fā)展,為了有效處理這些數(shù)據(jù),NoSQL和NewSQL數(shù)據(jù)庫應(yīng)運而生。本書包含對NoSQL和NewSQL的概述,以及利用MongoDB JSON文件數(shù)據(jù)庫的動手實踐的案例研究。 第17章包含關(guān)于大數(shù)據(jù)硬件與軟件基礎(chǔ)設(shè)施的細致討論。 人工智能案例研究 為什么這本書沒有關(guān)于人工智能的章節(jié)呢?畢竟,“AI”是印在封面上的。在第12~16章的案例研究中,我們介紹的人工智能主題(計算機科學(xué)與數(shù)據(jù)科學(xué)的一個關(guān)鍵交集)包含自然語言處理、利用數(shù)據(jù)挖掘?qū)witter進行情感分析、利用IBM Watson進行認知計算、監(jiān)督機器學(xué)習(xí)、無監(jiān)督機器學(xué)習(xí)、深度學(xué)習(xí)和強化學(xué)習(xí)(在習(xí)題中)。第17章介紹了大數(shù)據(jù)硬件和軟件基礎(chǔ)設(shè)施,這些基礎(chǔ)設(shè)施支撐了計算機科學(xué)家和數(shù)據(jù)科學(xué)家研究的前沿AI解決方案。 計算機科學(xué) 第1~10章的Python基礎(chǔ)知識會讓你像計算機科學(xué)家一樣思考。第11章提供了一個更高的視角,其中討論的都是經(jīng)典的計算機科學(xué)話題。第11章強調(diào)性能問題。 內(nèi)置集合:列表、元組、集合、字典 今天,大多數(shù)應(yīng)用開發(fā)人員不再構(gòu)建定制的數(shù)據(jù)結(jié)構(gòu)。這是CS2課程的主題—嚴格來說,我們的范圍是CS1和相應(yīng)的數(shù)據(jù)科學(xué)課程。書中用兩章的篇幅詳細介紹了Python的內(nèi)置數(shù)據(jù)結(jié)構(gòu)—列表、元組、字典和集合,大多數(shù)數(shù)據(jù)結(jié)構(gòu)任務(wù)都可以通過這些數(shù)據(jù)結(jié)構(gòu)來完成。 使用NumPy數(shù)組、pandas Series和DataFrame進行面向數(shù)組的編程 在這本書中我們專注于開源庫中的三個關(guān)鍵數(shù)據(jù)結(jié)構(gòu)—NumPy數(shù)組、pandas Series和pandas DataFrame。這些庫被廣泛用于數(shù)據(jù)科學(xué)、計算機科學(xué)、人工智能和大數(shù)據(jù)。NumPy的性能比內(nèi)置Python列表高出兩個數(shù)量級。 第7章中詳細介紹了NumPy數(shù)組。pandas等許多庫都是在NumPy的基礎(chǔ)上構(gòu)建的。第7~9章的“數(shù)據(jù)科學(xué)入門”部分介紹了pandas Series和DataFrame,這兩個庫以及NumPy數(shù)組將在剩余的章節(jié)中頻繁使用。 文件處理和序列化 第9章介紹文本文件處理,然后演示了如何使用流行的JSON(JavaScript對象表示法)格式把對象序列化。JSON是一個普遍使用的數(shù)據(jù)交換格式,在后面的數(shù)據(jù)科學(xué)章節(jié)中你會經(jīng)常見到它—通常為簡單起見把JSON的細節(jié)隱藏在庫中。 基于對象編程 在我們?yōu)楸緯M行調(diào)研期間研究的所有Python代碼中,很少遇到自定義類,而這在Python開發(fā)者使用的強大的庫中是很常見的。 我們強調(diào)大量使用Python開源社區(qū)打包到工業(yè)標準類庫中的類。你將專注于:了解有哪些庫,選擇你的應(yīng)用程序需要的庫,從現(xiàn)有類(通常是一行或兩行代碼)創(chuàng)建對象以及讓它們“跳起來、舞起來、唱起來”。這叫作基于對象編程—它使你能夠簡潔地構(gòu)建令人印象深刻的應(yīng)用程序,這是體現(xiàn)Python吸引力的重要組成部分。 通過這種方法,你可以使用機器學(xué)習(xí)、深度學(xué)習(xí)、強化學(xué)習(xí)(在習(xí)題中)和其他AI技術(shù)來解決各種各樣有趣的問題,包括語音識別和計算機視覺等認知計算方面的挑戰(zhàn)。過去,如果僅僅學(xué)過入門級編程課程,是不可能完成這些任務(wù)的。 面向?qū)ο缶幊?/p> 對計算機科學(xué)專業(yè)的學(xué)生來說,開發(fā)自定義類是一個至關(guān)重要的面向?qū)ο缶幊碳寄,相關(guān)的繼承、多態(tài)和鴨子類型也同樣重要。我們將在第10章中討論這些內(nèi)容。 面向?qū)ο缶幊痰挠懻撌悄K化的,所以教師可以分開介紹基礎(chǔ)或中級部分。 ………… 保羅·戴特爾(Paul Deitel) Deitel&Associates公司首席執(zhí)行官兼首席技術(shù)官,畢業(yè)于麻省理工學(xué)院,在計算機領(lǐng)域擁有38年的經(jīng)驗。他自1992年以來就為軟件開發(fā)人員教授專業(yè)課程,為包括思科、IBM、西門子、戴爾、NASA、北電網(wǎng)絡(luò)在內(nèi)的全球企業(yè)客戶提供了數(shù)百門編程課程。 目 錄 第1章 計算機和Python簡介 1 1.1 引言 2 1.2 硬件和軟件 3 1.3 數(shù)據(jù)層級 6 1.4 機器語言、匯編語言和高級語言 9 1.5 對象技術(shù)簡介 10 1.6 操作系統(tǒng) 13 1.7 Python簡介 16 1.8 (語言)庫 18 1.9 其他常見編程語言 20 1.10 試用:使用IPython和Jupyter Notebook 21 1.11 Internet和WWW 29 1.12 軟件技術(shù) 32 1.13 大數(shù)據(jù) 33 1.14 數(shù)據(jù)科學(xué)入門:大數(shù)據(jù)移動應(yīng)用案例研究 40 第2章 Python程序設(shè)計簡介 49 2.1 引言 50 2.2 變量和賦值語句 50 2.3 算術(shù)操作 52 2.4 print函數(shù)、單引號字符串和雙引號字符串 56 2.5 三引號字符串 58 2.6 從用戶處獲得輸入 59 2.7 判斷:if語句與比較操作 61 2.8 對象和動態(tài)類型 66 2.9 數(shù)據(jù)科學(xué)入門:基本統(tǒng)計功能 68 2.10 小結(jié) 70 第3章 控制語句和程序設(shè)計 73 3.1 引言 74 3.2 算法 74 3.3 偽代碼 75 3.4 控制語句 75 3.5 if語句 78 3.6 if...else和if...elif...else語句 80 3.7 while語句 85 3.8 for語句 86 3.9 增量賦值 89 3.10 程序設(shè)計:通過序列控制重復(fù) 90 3.11 程序設(shè)計:通過哨兵控制重復(fù) 93 3.12 程序設(shè)計:嵌套控制結(jié)構(gòu) 97 3.13 內(nèi)置函數(shù)range:進一步討論 101 3.14 使用Decimal類型表達貨幣總量 102 3.15 break和continue語句 105 3.16 布爾操作and、or和not 106 3.17 數(shù)據(jù)科學(xué)入門:趨勢的度量—均值、中值、眾數(shù) 109 3.18 小結(jié) 111 第4章 函數(shù) 119 4.1 引言 120 4.2 函數(shù)的定義 120 4.3 多參數(shù)函數(shù) 123 4.4 隨機數(shù)生成器 125 4.5 案例研究:機會游戲 128 4.6 Python標準庫 131 4.7 math模塊函數(shù) 132 4.8 使用IPython的tab補全功能 133 4.9 缺省形參值 135 4.10 關(guān)鍵字實參 136 4.11 任意實參表 136 4.12 方法:歸屬于對象的函數(shù) 138 4.13 作用域規(guī)則 138 4.14 import:進一步討論 140 4.15 給函數(shù)傳遞實參:進一步討論 142 4.16 函數(shù)調(diào)用棧 145 4.17 函數(shù)式程序設(shè)計 146 4.18 數(shù)據(jù)科學(xué)入門:數(shù)據(jù)分布的度量 148 4.19 小結(jié) 150 第5章 序列:列表和元組 155 5.1 引言 156 5.2 列表 156 5.3 元組 161 5.4 序列拆包 163 5.5 序列切片 166 5.6 del語句 169 5.7 給函數(shù)傳遞列表 171 5.8 排序列表 172 5.9 搜索序列 174 5.10 其他列表方法 176 5.11 用列表模擬棧 178 5.12 列表解析 179 5.13 生成器表達式 181 5.14 過濾器、映射和約簡 182 5.15 其他序列處理函數(shù) 185 5.16 二維列表 187 5.17 數(shù)據(jù)科學(xué)入門:模擬和靜態(tài)可視化 191 5.18 小結(jié) 199 第6章 字典和集合 209 6.1 引言 210 6.2 字典 210 6.3 集合 221 6.4 數(shù)據(jù)科學(xué)入門:動態(tài)可視化 228 6.5 小結(jié) 234 第7章 使用NumPy進行面向數(shù)組的編程 239 7.1 引言 240 7.2 從已有數(shù)據(jù)中創(chuàng)建數(shù)組 241 7.3 數(shù)組屬性 242 7.4 用特定值填充數(shù)組 244 7.5 使用range創(chuàng)建數(shù)組 244 7.6 列表與數(shù)組的性能比較:%timeit簡介 246 7.7 數(shù)組操作 248 7.8 NumPy計算方法 250 7.9 全局函數(shù) 252 7.10 索引和切片 254 7.11 視圖:淺拷貝 256 7.12 深拷貝 258 7.13 轉(zhuǎn)換和轉(zhuǎn)置 259 7.14 數(shù)據(jù)科學(xué)入門:pandas Series和DataFrame 262 7.15 小結(jié) 275 第8章 字符串:進一步討論 283 8.1 引言 284 8.2 格式化字符串 285 8.3 字符串拼接和重復(fù) 289 8.4 字符串空白符剝離 290 8.5 改變字符的大小寫 291 8.6 字符串比較操作 292 8.7 子串搜索 292 8.8 子串替換 294 8.9 字符串切分和合并 294 8.10 字符和字符測試方法 297 8.11 原生字符串 298 8.12 正則表達式簡介 299 8.13 數(shù)據(jù)科學(xué)入門:pandas、正則表達式和數(shù)據(jù)治理 307 8.14 小結(jié) 312 第9章 文件和異常 319 9.1 引言 320 9.2 文件 321 9.3 文本文件處理 321 9.4 更新文本文件 325 9.5 JSON序列化 327 9.6 安全問題:pickle序列化和反序列化 330 9.7 關(guān)于文件的其他說明 330 9.8 異常處理 331 9.9 finally子句 336 9.10 顯式引發(fā)異常 339 9.11。ǹ蛇x)棧展開和回溯 339 9.12 數(shù)據(jù)科學(xué)入門:CSV文件的處理 342 9.13 小結(jié) 349 第10章 面向?qū)ο蟪绦蛟O(shè)計 355 10.1 引言 356 10.2 定制類Account 358 10.3 屬性的受控訪問 363 10.4 數(shù)據(jù)訪問的特性 364 10.5 私有屬性模擬 371 10.6 案例研究:洗牌和切牌 373 10.7 繼承:基類和子類 382 10.8 構(gòu)建繼承層次和多態(tài)簡介 384 10.9 鴨子類型和多態(tài) 392 10.10 操作符重載 393 10.11 異常類層次和定制異常處理 397 10.12 有名元組 399 10.13 Python 3.7新數(shù)據(jù)類簡介 400 10.14 使用文檔字符串和doctest進行單元測試 406 10.15 命名空間和作用域 411 10.16 數(shù)據(jù)科學(xué)入門:時間序列和簡單線性回歸 414 10.17 小結(jié) 423 第11章 計算機科學(xué)思維:遞歸、搜索、排序和大O表示法 431 第12章 自然語言處理 477 第13章 Twitter數(shù)據(jù)挖掘 515 第14章 IBM Watson和認知計算 565 第15章 機器學(xué)習(xí):分類、回歸和聚類 593 第16章 深度學(xué)習(xí) 665 第17章 大數(shù)據(jù):Hadoop、Spark、NoSQL和IoT 723
你還可能感興趣
我要評論
|