- 利用Python進(jìn)行數(shù)據(jù)分析(原書(shū)第3版)
- (美)韋斯·麥金尼
- 3230字
- 2024-03-04 16:53:19
前言
本書(shū)第1版于2012年出版,那時(shí)Python中像pandas這樣的開(kāi)源數(shù)據(jù)分析庫(kù)剛出現(xiàn)不久,但發(fā)展十分迅速。當(dāng)我在2016年和2017年創(chuàng)作第2版時(shí),不僅要將Python更新到3.6版本(第1版使用的是Python 2.7),還要更新過(guò)去5年間pandas的諸多變更。2022年,Python語(yǔ)言變化很少(目前是Python 3.10,2022年年底會(huì)推出3.11),但pandas的演進(jìn)一直在持續(xù)。
第3版的目標(biāo)是讓知識(shí)點(diǎn)緊跟Python、NumPy、pandas的發(fā)展,以及其他項(xiàng)目的最新版本,較少涉及過(guò)去幾年新推出的Python項(xiàng)目。因?yàn)楸緯?shū)已經(jīng)成為許多大學(xué)課程和職場(chǎng)專業(yè)人士的重要參考資料,所以我會(huì)盡力避免書(shū)中內(nèi)容在短期內(nèi)過(guò)時(shí)的情況。
本書(shū)的新特點(diǎn)是讀者可以訪問(wèn)本書(shū)的在線版本(https://wesmckinney.com/book)。我會(huì)持續(xù)更新在線版本,如果讀者碰到書(shū)中運(yùn)行有誤的地方,不妨及時(shí)查詢線上內(nèi)容的修訂。
排版約定
本書(shū)中使用以下排版約定:
斜體(Italic)
表示新的術(shù)語(yǔ)、URL、電子郵件地址、文件名和文件擴(kuò)展名。
等寬字體(Constant width)
用于程序清單,以及段落中的程序元素,例如變量名、函數(shù)名、數(shù)據(jù)庫(kù)、數(shù)據(jù)類型、環(huán)境變量、語(yǔ)句以及關(guān)鍵字。
等寬粗體(Constant width bold)
表示應(yīng)由用戶直接輸入的命令或其他文本。
等寬斜體(Constant width italic)
表示應(yīng)由用戶提供的值或由上下文確定的值替換的文本。

該圖示表示提示或建議。

該圖示表示一般性說(shuō)明。

該圖示表示警告或注意。
示例代碼
讀者可以在本書(shū)的GitHub倉(cāng)庫(kù)https://github.com/wesm/pydata-book找到書(shū)中每章的數(shù)據(jù)文件和相關(guān)材料。如果訪問(wèn)GitHub不便,還可以訪問(wèn)本書(shū)的Gitee鏡像地址https://gitee.com/wesmckinn/pydata-book。
這里的代碼是為了幫助你更好地理解本書(shū)的內(nèi)容。通常,可以在程序或文檔中使用本書(shū)中的代碼,而不需要聯(lián)系O'Reilly獲得許可,除非需要大段地復(fù)制代碼。例如,使用本書(shū)中所提供的幾個(gè)代碼片段來(lái)編寫(xiě)一個(gè)程序不需要得到我們的許可,但銷售或發(fā)布O'Reilly的示例代碼則需要獲得許可。引用本書(shū)的示例代碼來(lái)回答問(wèn)題也不需要許可,將本書(shū)中的很大一部分示例代碼放到自己的產(chǎn)品文檔中則需要獲得許可。
非常歡迎讀者使用本書(shū)中的代碼,希望(但不強(qiáng)制)注明出處。注明出處時(shí)包含書(shū)名、作者、出版社和ISBN,例如:
Python for Data Analysis,作者Wes McKinney,由O'Reilly出版,書(shū)號(hào)978-1-098-10403-0。
如果讀者覺(jué)得對(duì)示例代碼的使用超出了上面所給出的許可范圍,歡迎通過(guò)permission@oreilly.com聯(lián)系我們。
O'Reilly在線學(xué)習(xí)平臺(tái)(O'Reilly Online Learning)

40多年來(lái),O'Reilly Media致力于提供技術(shù)和商業(yè)培訓(xùn)、知識(shí)和卓越見(jiàn)解,來(lái)幫助眾多公司取得成功。
我們擁有獨(dú)一無(wú)二的專家和革新者組成的龐大網(wǎng)絡(luò),他們通過(guò)圖書(shū)、文章、視頻在我們的在線學(xué)習(xí)平臺(tái)上分享他們的知識(shí)和經(jīng)驗(yàn)。O'Reilly的在線學(xué)習(xí)平臺(tái)允許你按需訪問(wèn)現(xiàn)場(chǎng)培訓(xùn)課程、深入的學(xué)習(xí)路徑、交互式編程環(huán)境,以及O'Reilly和200多家其他出版商提供的大量文本資料和視頻資源。有關(guān)的更多信息,請(qǐng)?jiān)L問(wèn)https://oreilly.com。
如何聯(lián)系我們
對(duì)于本書(shū),如果有任何意見(jiàn)或疑問(wèn),請(qǐng)按照以下地址聯(lián)系本書(shū)出版商。
美國(guó):
O'Reilly Media,Inc.
1005 Gravenstein Highway North
Sebastopol,CA 95472
中國(guó):
北京市西城區(qū)西直門(mén)南大街2號(hào)成銘大廈C座807室(100035)
奧萊利技術(shù)咨詢(北京)有限公司
要詢問(wèn)技術(shù)問(wèn)題或?qū)Ρ緯?shū)提出建議,請(qǐng)發(fā)送電子郵件至errata@oreilly.com.cn。
本書(shū)配套網(wǎng)站https://oreil.ly/python-data-analysis-3e上列出了勘誤表、示例以及其他信息。
關(guān)于書(shū)籍、課程、會(huì)議和新聞的更多信息,請(qǐng)?jiān)L問(wèn)我們的網(wǎng)站http://oreilly.com。
我們?cè)贚inkedIn上的地址:https://linkedin.com/company/oreilly-media。
我們?cè)赥witter上的地址:http://twitter.com/oreillymedia。
我們?cè)赮ouTube上的地址:http://www.youtube.com/oreillymedia。
致謝
本書(shū)的出版離不開(kāi)世界各地同行專家富有成果的討論、合作和幫助,對(duì)他們表示感謝。
懷念John D. Hunter(1968—2012)
在我完成本書(shū)第1版最終手稿不久,我們親愛(ài)的朋友和同事John D. Hunter經(jīng)歷了一場(chǎng)與結(jié)腸癌的搏斗后,于2012年8月28日過(guò)世了。
John對(duì)Python科學(xué)計(jì)算和數(shù)據(jù)社區(qū)的影響之大難以估量,他給我們留下了豐厚的“遺產(chǎn)”。除了在2000年年初開(kāi)發(fā)matplotlib(Python那時(shí)還不像現(xiàn)在這么流行)外,他還致力于塑造核心一代開(kāi)源開(kāi)發(fā)者的文化氛圍,這代開(kāi)發(fā)者如今已成長(zhǎng)為Python社區(qū)生態(tài)的頂梁柱。Python社區(qū)生態(tài)對(duì)Python語(yǔ)言來(lái)說(shuō)舉足輕重,這要感恩John的貢獻(xiàn)。
在我開(kāi)源生涯的早期,pandas剛剛發(fā)布了0.1版本,我在2010年1月有幸結(jié)識(shí)了John。那時(shí)是他的至暗時(shí)刻,但他仍然給我鼓勵(lì)和指導(dǎo),驅(qū)動(dòng)著我前進(jìn),最終促使我的愿景得以實(shí)現(xiàn)——pandas和Python成為一流的數(shù)據(jù)分析語(yǔ)言。
John與IPython、Jupyter項(xiàng)目的先驅(qū)Fernando Pérez、Brian Granger,以及其他很多Python社區(qū)發(fā)起人聯(lián)系緊密。我們4人曾設(shè)想共同創(chuàng)作一本書(shū),但因?yàn)橹挥形业膫€(gè)人時(shí)間最自由,所以這個(gè)想法被擱置了。我非常確信,John會(huì)為過(guò)去9年中我們個(gè)人以及社區(qū)所取得的成就感到驕傲。
第3版致謝(2022)
距離我創(chuàng)作本書(shū)第1版已經(jīng)過(guò)去10年了,我踏上Python程序員的旅程也已經(jīng)有15年之久。回顧過(guò)往,真是滄桑巨變!Python從一門(mén)邊緣的數(shù)據(jù)分析語(yǔ)言成長(zhǎng)為最廣泛使用的語(yǔ)言,并成為數(shù)據(jù)科學(xué)、機(jī)器學(xué)習(xí)、人工智能工作中多數(shù)(也許是絕大多數(shù)!)人的選擇。
我從2013年開(kāi)始就不再是pandas開(kāi)源項(xiàng)目的活躍貢獻(xiàn)者了,但是pandas遍及世界的開(kāi)發(fā)者社區(qū)持續(xù)蓬勃發(fā)展,成為以社區(qū)為中心的開(kāi)源軟件運(yùn)動(dòng)的標(biāo)桿。許多“次世代”的處理表格型數(shù)據(jù)的Python項(xiàng)目都以pandas為范本,構(gòu)建其人機(jī)交互。pandas對(duì)Python數(shù)據(jù)科學(xué)生態(tài)的未來(lái)發(fā)展產(chǎn)生了持續(xù)的影響力。
希望本書(shū)能繼續(xù)成為學(xué)生和職場(chǎng)人士從事Python數(shù)據(jù)工作的重要學(xué)習(xí)材料。
我要特別感謝O'Reilly允許我在個(gè)人網(wǎng)站上發(fā)布本書(shū)的在線開(kāi)源版本,地址是https://wesmckinney.com/book,希望在線版本能惠及更多讀者,幫助他們?cè)跀?shù)據(jù)分析領(lǐng)域拓展更多機(jī)會(huì)。這一切成為可能,J. J. Allaire功不可沒(méi),他幫我將本書(shū)文件從Docbook XML轉(zhuǎn)換為Quarto(https://quarto.org)——這是一款嶄新且強(qiáng)大的紙質(zhì)版和網(wǎng)頁(yè)發(fā)布系統(tǒng),可用于科學(xué)和技術(shù)領(lǐng)域。
我還要特別感謝技術(shù)審校者Paul Barry、Jean-Christophe Leyder、Abdullah Karasan和William Jamir,他們的細(xì)致反饋顯著提升了本書(shū)的可讀性、清晰性和可理解性。
第2版致謝(2017)
距離2012年7月我完成本書(shū)第1版手稿已有5年了,這段時(shí)間發(fā)生了很多事,Python社區(qū)蓬勃發(fā)展,圍繞Python的開(kāi)源軟件生態(tài)也十分繁榮。
pandas核心開(kāi)發(fā)者孜孜不倦地付出,使得pandas項(xiàng)目高速成長(zhǎng),也使得pandas的用戶群體遍布Python數(shù)據(jù)科學(xué)生態(tài)的各個(gè)角落,沒(méi)有他們本書(shū)將不會(huì)存在。pandas的核心開(kāi)發(fā)者包括但不限于Tom Augspurger、Joris van den Bossche、Chris Bartak、Phillip Cloud、gfyoung、Andy Hayden、Masaaki Horikoshi、Stephan Hoyer、Adam Klein、Wouter Overmeire、Jeff Reback、Chang She、Skipper Seabold、Jeff Tratner和y-p。
在第2版的寫(xiě)作過(guò)程中,非常感謝O'Reilly的工作人員對(duì)于寫(xiě)作流程給予的耐心幫助,他們是Marie Beaugureau、Ben Lorica和Colleen Toporek。我再次得到了優(yōu)秀技術(shù)審校者的支持,他們是Tom Augspurger、Paul Barry、Hugh Brown、Jonathan Coe和Andreas Müller。
本書(shū)第1版已經(jīng)被翻譯成多國(guó)語(yǔ)言,包括漢語(yǔ)、法語(yǔ)、德語(yǔ)、日語(yǔ)、韓語(yǔ)和俄語(yǔ)。將本書(shū)翻譯成外文是一份艱巨卻默默無(wú)聞的工作,感謝譯者幫助世界各地更多的人學(xué)習(xí)編程和使用數(shù)據(jù)分析工具。
在過(guò)去幾年中,Cloudera和Two Sigma投資公司對(duì)我的持續(xù)開(kāi)源開(kāi)發(fā)工作的支持使我感到十分幸運(yùn)。相對(duì)于用戶基數(shù),開(kāi)源項(xiàng)目獲取到的資源漸趨減少,商業(yè)機(jī)構(gòu)向重要開(kāi)源項(xiàng)目提供開(kāi)發(fā)支持變得越來(lái)越重要。這是一件值得投入的工作。
第1版致謝(2012)
如果沒(méi)有眾多相關(guān)人士的支持,寫(xiě)作本書(shū)對(duì)我來(lái)說(shuō)將會(huì)十分艱難。
對(duì)于O'Reilly的工作人員,我非常感謝編輯Meghan Blanchette和Julie Steele,他們?cè)谡麄€(gè)寫(xiě)作過(guò)程中給予了我很多指導(dǎo)。另外,Mike Loukides還在立項(xiàng)階段與我一起工作,幫助本書(shū)出版。
我得到了大量相關(guān)人士的技術(shù)評(píng)論。尤其是Martin Blais和Hugh Brown,他們?cè)谔岣弑緯?shū)示例的質(zhì)量、內(nèi)容清晰度和全書(shū)組織方面提供了很多有價(jià)值的幫助。James Long、Drew Conway、Fernando Pérez、Brian Granger、Thomas Kluyver、Adam Klein、Josh Klein、Chang She和Stéfan van der Walt都審閱了本書(shū)的一章或多章,從很多角度提供了有效反饋。
我從數(shù)據(jù)社區(qū)的朋友和同行那里獲得了很多關(guān)于示例和數(shù)據(jù)集的優(yōu)秀想法,他們是:Mike Dewar、Jeff Hammerbacher、James Johndrow、Kristian Lum、Adam Klein、Hilary Mason、Chang She和Ashley Williams。
當(dāng)然,我也非常感激Python開(kāi)源科學(xué)社區(qū)的眾多領(lǐng)頭人,他們?yōu)槲业拈_(kāi)發(fā)工作打下了基礎(chǔ),并在本書(shū)的寫(xiě)作過(guò)程中給予我鼓勵(lì),包括IPython核心團(tuán)隊(duì)(Fernando Pérez、Brian Granger、Min Ragan-Kelly、Thomas Kluyver等)、John Hunter、Skipper Seabold、Travis Oliphant、Peter Wang、Eric Jones、Robert Kern、Josef Perktold、Francesc Alted、Chris Fonnesbeck等。很多人一直以來(lái)提供了支持、想法和鼓勵(lì),包括Drew Conway、Sean Taylor、Giuseppe Paleologo、Jared Lander、David Epstein、John Krowas、Joshua Bloom、Den Pilsworth、John Myles-White。
我還要感謝生活中的一些人。首先是AQR的前同事,他們是:Alex Reyfman、Michael Wong、Tim Sargen、Oktay Kurbanov、Matthew Tschantz、Roni Israelov、Michael Katz、Ari Levine、Chris Uga、Prasad Ramanan、Ted Square和Hoon Kim。最后,感謝我的指導(dǎo)教授Haynes Miller(麻省理工學(xué)院)和Mike West(杜克大學(xué))。2014年,我在更新本書(shū)代碼示例和修正一些由于pandas變更產(chǎn)生的錯(cuò)誤時(shí),從Phillip Cloud和Joris van den Bossche那里獲得了重要幫助。
個(gè)人方面,感謝Casey在我寫(xiě)作過(guò)程中提供了無(wú)價(jià)的生活支持,她忍受我的情緒起伏直到我完成最終手稿。最后,感謝我的父母Bill和Kim,他們教會(huì)我如何去追尋夢(mèng)想、永不止步。
- Java異步編程實(shí)戰(zhàn)
- 高效微控制器C語(yǔ)言編程
- OpenNI Cookbook
- HTML5游戲開(kāi)發(fā)案例教程
- PHP網(wǎng)絡(luò)編程學(xué)習(xí)筆記
- Python機(jī)器學(xué)習(xí)編程與實(shí)戰(zhàn)
- Java程序設(shè)計(jì):原理與范例
- Gradle for Android
- 51單片機(jī)C語(yǔ)言開(kāi)發(fā)教程
- 動(dòng)手學(xué)數(shù)據(jù)結(jié)構(gòu)與算法
- 深入剖析Java虛擬機(jī):源碼剖析與實(shí)例詳解(基礎(chǔ)卷)
- 細(xì)說(shuō)Python編程:從入門(mén)到科學(xué)計(jì)算
- Java EE 7 with GlassFish 4 Application Server
- C#程序設(shè)計(jì)基礎(chǔ)入門(mén)教程
- 嵌入式C編程實(shí)戰(zhàn)