“告别痛苦,快乐学习pandas”是Datawhale社区和耿远昊发起“Joyful pandas”开源项目的初衷。历经两年的精心打磨,它终于要以熊猫书《pandas数据处理与分析》新面貌与大家见面啦。
▲ 点击图片购书5折
本书作者耿远昊正在威斯康星大学麦迪逊分校统计学攻读硕士学位。他是Datawhale开源社区成员,“Joyful Pandas”开源项目作者。他也是pandas贡献者,活跃于pandas开源社区,主要贡献涉及漏洞修复、功能实现与性能优化等方面,对pandas在数据处理与分析中的应用有丰富经验。
耿远昊最初学习pandas时,也经历了一路坎坷。为了帮助更多人入门pandas,Datawhale发起Joyful Pandas开源项目。耿远昊将自己的学习经验进行总结并分享,希望更多的人可以快乐学习pandas。
01
让人又喜又恼的pandas
Pandas是Python数据分析的利器,也是各种数据建模的标准工具。pandas作为数据分析中的大红人,被无数人喜爱,但也让不少人苦恼无比——好用是非常好用,复杂也是真的复杂啊!
在学习pandas的时候,初学者可能会觉得无从下手:
这个东西的语法怎么那么混乱?
这满屏幕的setting with copy warning要怎么消除?
为什么写着写着就这么多if else了,要怎么解决?
这API多得离谱,函数看得头晕!
而且它处理数据的速度也没别人说得这么快呀……
pandas实在是太复杂,方法内容什么的太多了,用起来是真的恼人!
这就像第一次进菜市场,初学者只能茫然四顾,不知道自己要买的菜在哪儿,好不容易看到一个卖胡萝卜的摊位,买完逛了半天才找到卖鸡蛋的。满头大汗地把所有菜品买齐,挤出菜市场回头再看一眼密密麻麻的人群和摊位,想着明天还要再来,便立马感觉一阵痛苦。
02
学习pandas的痛苦之旅
耿远昊对于这种痛苦非常感同身受。
他在华东师范大学读本科的时候学的是统计学专业,当时不管是作业还是课程,都有大量的大型表格处理需求。虽然所有的需求几乎都能用xlrd/xlwt和Python循环来解决,但也仅仅是能解决而已,因为处理速度很慢,代码几乎完全不能复用,每遇到新的任务就要重新写一遍代码,然后等它傻跑半天,解决问题效率很低,成本太高。
他也曾尝试过学习pandas,但是因为学业繁忙,只能零星地学,效果很差。我们在前面说的那些问题,他也大多遇到过。pandas这个巨大而庞杂的工具包就像一头立在路边的大象,他感觉自己和一个盲人没啥区别,摸到腿就是腿,摸到鼻子就是鼻子,根本不知道这大象到底长啥样!
也正是因为函数多,参数更多,没有一条比较清晰的学习路线,他开始只能东一榔头西一斧子地学,感觉更混乱了。一旦程序报错,他更加手足无措:因为不知道内部操作而难以修复;而且即使这次修复好了,下一次遇到同样问题很有可能又忘了怎么解决。
他很是感慨,pandas令人头痛!
好在事情在2019年的秋天出现了转机。他偶然接触到了Theodore Petrou写的Pandas Cookbook一书,如获至宝!在快速地学习了一遍之后,他发现自己之前迷迷糊糊搞不明白的概念似乎变得清晰了许多!这让他学习pandas的痛苦减少了几分。
很快,他又找到官方的用户指南,一字一句地查看,通读完成后在脑海里建立了主要知识点的宏观概念。趁热打铁,他又拿起了pandas之父Wes McKinney的书Python for Data Analysis继续学习,才结束了自己学习pandas的痛苦之旅。
03
怒写教程,被pandas官方推荐
虽然他的痛苦之旅结束了,但是还有更多的人将要或者已经踏上了这段同样难受的学习pandas的旅程。经过一段时间的思考,他决定自己编写一套关于pandas的教程,希望为有着相似痛苦体验的人提供一些帮助,让pandas的学习和使用变得更轻松。
为了保证教程的正确和权威,同时保证教程的好用和简单,他结合Python for Data Analysis、Pandas Cookbook和pandas官方用户指南,按照自己的切身体验和学习思路,全面、完整地梳理了pandas的主线内容,编写了一套关于pandas的教程——Joyful Pandas。
这个名字就很能体现他的怨念和愿景:原先学习使用pandas真的是极其痛苦(Painful),现在要结束这种痛苦,是时候使用这个新的教程让pandas的学习过程变得快乐(Joyful)了!
作为一个快乐学习的教程,肯定不能像蜻蜓点水一样浅尝辄止,和雾里看花一样啥都不说明白,那样会更痛苦的。根据官方指南和两本pandas权威著作,耿远昊对pandas每个部分的核心概念和函数都做了重点介绍,并总结了函数之间的逻辑关系,建立了清晰的数据处理宏观体系,让人一目了然地就能看明白自己要学哪些内容。
Joyful Pandas教程分为10章,串成了一条非常明显的学习路线:先学pandas基础知识,然后学习如何使用索引、分组、变形、合并4个基础操作,之后学习缺失数据、文本数据、分类数据、时间序列数据4类关键数据。这些知识点是pandas的主线内容,在教程中被清晰地展示出来。跟着这条学习路线走,就能了解pandas的基础概念与操作,掌握关键的数据类型,从而在实际使用中达到信手拈来的效果。
▲ 教程内容概览
当然,想要达到“所写所得即所想”的地步,实践是必不可少的,光说不练假把式,只有自己身体力行地去做,才能真正得到快乐的学习体验。教程里面有不少的练习题,并且附上了解答思路和方法,还有代码实现也尽数提供,非常人性化。
2020年“Joyful Pandas”一经开源推出,就在pandas领域引起了不小的轰动。很快该课程的有效性得到读者们的认可,作为作者,耿远昊常被邀请去高校、企业组织举办讲座或直播。这个教程还被pandas官方增选为社区推荐教程,得到了官方的肯定。
▲ pandas官方推荐教程
他对于开源和分享精神是非常推崇的,一个人可以走得很快,一群人可以走得很远,他鼓励我们在学习过程中要多思考、多练习、多总结,同时要多分享、多交流、多协作,这样才能够更好地畅游数据科学的世界。
Joyful Pandas教程得到了非常多读者的喜爱,很多读者不再满足于单纯的线上教程模式,还希望它能够有纸质版,可以随时拿来阅读。
他肯定要满足大家的期盼。
04
让更多的人轻松学习pandas
纸质图书当然不是直接把教程复制下来印刷就完事了,还需要进行更多的工作。
首先就是pandas版本的升级,为了让读者们获取最新的知识,作者针对最新发布的pandas1.4.0版本,利用春节假期和无数工作日的夜晚,在原本已经进入校对环节,即将与大家见面的图书版本上,又对全书进行了两次重大更新。本书是目前pandas版本最新的教程。
因为学习pandas和编写“Joyful Pandas”教程的经验,他加入了pandas社区并成为活跃分子,为pandas的1.1.0版本、1.2.0版本、1.3.0版本、1.4.0版本和1.5.0版本贡献了自己的一份力量,包括文档描述性错误、修复代码中的bug以及增加函数的新特性(resample对象的逆向采样等)。这些丰富的经历,让他对pandas有了更为深入的理解,并把这种理解提炼成更为简明清晰的内容新增到图书之中。
在这样的背景之下,他对原教程1~10章进行了大量的修订工作。并且增加了3章的进阶实战内容!分别涵盖数据观测、特征工程、性能优化3个部分。正如前面说的那样,快乐学习的同时少不了实践,为了巩固章节知识,他又在每个章末尾增加了恰到好处的习题。
他和编辑长时间、多次对图书稿件进行修改,最终稿也终于定下来,图书马上就能与我们见面了。
图书里面有着上千段短小精悍的代码,输入输出成对出现,非常直观地展示了当前知识点的作用,我们一眼就能看清楚。
▲ 短小精悍的代码示例
对于关键的内容,或者需要补充和深入解读的部分,书中都进行了注解。
▲ “注解”示例
在章节内容初步学习完之后,紧跟着的是练一练栏目,我们能够把刚学的知识点做一个简单快速的回顾。
▲ “练一练”示例
加上新增的习题内容,从整体上连成一条线,把章节内容串在一起,从看到学,从理解到实践,达到融会贯通的效果。
▲ “习题”示例
当然,只出题不给答案是耍流氓。书中所有的练一练、习题的解答和代码实现,都有配套的资源,直接在异步社区《pandas数据处理与分析》图书页面就能获取,或者在GitHub上“datawhalechina/joyful-pandas”项目中下载。
他一直贯彻着“快乐学习”的理念,所以在写书的同时也关注着读者的定位——读者不需要熟悉数据科学或者数据分析,甚至不需要熟练使用Python,只要具备基本的语法知识就好了!完全的零基础可用!当然,对pandas有一定的基础,并且想要系统学习数据处理与分析方法的读者,也能从中获益,巩固和拓展自己的相关知识。
成书之后,可以预见的是会有更多的人告别痛苦的pandas学习,转而投入快乐学习pandas的怀抱。
05
适合初学者
pandas的知识体系对新人来说过于庞杂,学习成本和难度极大,尽管有官方指南和不少权威图书,但它们可能并不适合初学者。
耿远昊以自己的亲身体验出发而写的《pandas数据处理与分析》,其实就是许多初学者想要的:对庞杂的pandas知识体系进行剖析和梳理,找出一条由浅入深的学习路线,找出关键的函数方法,通过理论和实践的有效结合,帮助自己轻松地学习pandas。
很多东西只有以相似的视角,才能得到感同身受的内容,学习是如此,写书同样是如此。
文章编辑:沙鱼 审校:桐希,刘雅思
参考来源:
[1] 耿远昊.pandas数据处理与分析.[M].北京:人民邮电出版社,2022.
[2] datawhalechina/joyful-pandas: pandas中文教程..
[3] Community tutorials — pandas