1.1 Pandas是什么
很多初学者可能有这样一个疑问:“我想学的是Python数据分析,为什么经常会被引导到Pandas上去?”虽然这两个东西都是以P开头的,但它们并不是同一个层面的东西。简单来说,Pandas是Python这门编程语言中一个专门用来做数据分析的工具,它们的关系如图1-1所示。接下来我们就说说Python是什么,Pandas又是什么。
图1-1 Pandas和Python的关系
1.1.1 Python简介
Python是一门强大的编程语言,它简单易学,提供众多高级数据结构,让我们可以面向对象编程。Python是一门解释型语言,语法优雅贴近人类自然语言,符合人类的认知习惯。
Python支持跨平台,能够运行在所有的常见操作系统上。Python在近期热门的大数据、科学研究、机器学习、人工智能等领域大显身手,并且几乎在所有领域都有应用,因此学习它十分划算。
Python由荷兰人吉多·范罗苏姆(Guido van Rossum)创造,第一版发布于1991年。关于为何有Python这个项目,吉多·范罗苏姆在1996年曾写道:
6年前,也就是1989年12月,我在寻找一门“课余”编程项目来打发圣诞节前后的时间。到时我的办公室会关门,而我只有一台家用电脑,没有什么其他东西。我决定为我当时正在构思的新的脚本语言写一个解释器,它是ABC语言的后代,对UNIX/C程序员会有吸引力。当时我对项目叫什么名字并不太在乎,由于我是《蒙提·派森的飞行马戏团》的狂热爱好者,我就选择了用Python作为项目的名字。
《蒙提·派森的飞行马戏团》(Monty Python's Flying Circus)是BBC播出的英国电视喜剧剧集,蒙提·派森(Monty Python)是创作该剧的六人喜剧团队,由此可见,Python虽原意为蟒蛇,但吉多·范罗苏姆用它来命名一门开发语言,并非出于他对蟒蛇的喜爱,大家不必恐惧。
Python 2.0于2000年10月16日发布。Python 3.0于2008年12月3日发布,此版不完全兼容之前的Python源代码。目前Python的正式版已经更新到3.9版本,且官方不再维护2.0版本,因此建议初学者(包括已经在学习的)至少从3.6版本开始学习,之后的版本功能差异不会太大。
1.1.2 Python的应用
Python的应用范围非常广泛,几乎在所有领域它都能起到作用,这里列举一些典型的和常见的应用方向。YouTube、Google、Yahoo!、NASA都在内部大量使用Python。
1. Web开发
简单来说,Web开发就是开发网络站点,包括PC站点、移动站点(m站)、App、小程序的数据接口。一些流行的Python框架,如Django、Flask、Tornado等,可以让我们在做Web开发时省时又省力。知乎、豆瓣等就是使用Python开发的知名网站。
2. 网络爬虫
爬虫模拟用户登录网站,爬取我们需要的数据,只要你能看到的信息它都可以批量、定时、快速地爬取下来并整理好。爬虫还可以帮你注册、登录、提交数据。Python自带的urllib库以及第三方的requests、Scrappy都是做这件事的高手。
3. 计算与数据分析
研究人员需要对数据进行分析处理,NumPy、SciPy、Matplotlib等第三方库可以进行科学计算。数据处理是我们工作学习中的日常,各种Excel表格都可以用Python方便地进行处理,而且既高效又能实现批量和自动化,我们不用再每天做重复的工作。提供包括可视化在内的一揽子解决方案的Pandas越来越受欢迎,成为Python培训公司的吸金课程。常见的数据可视化库有Matplotlib、Ploty、Seaborn等,此外,基于数据可视化前端项目Echarts的pyecharts也越来越受欢迎。
4. 界面(GUI)开发
Python自带的Tkinter库支持GUI开发,让用户通过图形界面进行交互。还可以选择wxPython或PyQt等三方GUI库开发跨平台的桌面软件。通过PyInstaller将程序发布为独立的安装程序包,即可在Windows、masOS等平台上安装和运行。
5. 人工智能
近年来,机器学习、神经网络、深度学习等人工智能领域越来越离不开Python,Python已经成为这些领域的主流编程语言。Facebook的神经网络框架PyTorch和Google的TensorFlow都有Python语言版本。scikit-learn是机器学习领域最知名的Python库之一。
6. 游戏开发
Python可以编写一些小游戏,当然在大型游戏中也扮演着重要的角色,如很多大型游戏用C++编写图形显示等高性能模块,用Python编写一些逻辑模块。PyGame库可用于直接开发一些简单游戏,其他的Python游戏库还有Turtle、Pymunk、Arcade、Pyglet及Cocos2d等。知名游戏Sid Meier’s Civilization(《文明》)就是使用Python实现的。
7. 图形图像
Python可以处理图像,做视频渲染。众多工业级大型软件开放了Python接口,供使用者自己编辑处理程序。图形图像可以应用在医学影像分析、影视制作、人脸识别、无人驾驶等领域。相关的库包有PIL、OpenCV、SimpleITK、Pydicom等。
8. 其他
Python是IT行业运维人员、黑客的主要工作语言,云计算搭建、用PyRo工具包进行机器人控制编程已经有众多的业务实践。
1.1.3 为什么不选择R
众所周知,R语言是专门针对数据领域的开发语言,同样也是开源、免费、跨平台的,虽然各大公司招聘岗位描述上要求掌握Python或者R语言,但笔者还是不推荐学习R。
首先,Python更加简单。Python语法更加接近英文自然语言,学习路径短,有大量的图书和网络资料。其次,Python生态更加完善。在数据科学领域有许多强大的库来满足我们不同的需求,如数据获取(Scrapy、BeautifulSoup)、科学计算(NumPy、SciPy、PyTorch)、可视化(Matplotlib、Seaborn)、机器学习(scikit-learn、TensorFlow)等。最后,Python更加通用,Python几乎可以应用在所有领域。
1.1.4 Pandas简介
Pandas是使用Python语言开发的用于数据处理和数据分析的第三方库。它擅长处理数字型数据和时间序列数据,当然文本型的数据也能轻松处理。
作为Python的三方库,Pandas是建构在Python的基础上的,它封装了一些复杂的代码实现过程,我们只要调用它的方法就能轻松实现我们的需求。
说明
Python中的库、框架、包意义基本相同,都是别人造好的轮子,我们可以直接使用,以减少重复的逻辑代码。正是由于有众多覆盖各个领域的框架,我们使用起Python来才能简单高效,而不用关注技术实现细节。
Pandas由Wes McKinney于2008年开发。McKinney当时在纽约的一家金融服务机构工作,金融数据分析需要一个健壮和超快速的数据分析工具,于是他就开发出了Pandas。
Pandas的命名跟熊猫无关,而是来自计量经济学中的术语“面板数据”(Panel data)。面板数据是一种数据集的结构类型,具有横截面和时间序列两个维度。不过,我们不必了解它,它只是一种灵感、思想来源。
Pandas目前已经更新到1.2.1版本,本书就是基于这个版本编写的。
1.1.5 Pandas的使用人群
Pandas对数据的处理是为数据分析服务的,它所提供的各种数据处理方法、工具是基于数理统计学的,包含了日常应用中的众多数据分析方法。我们学习它不仅要掌控它的相应技术,还要从它的数据处理思路中学习数据分析的理论和方法。
特别地,如果你想要成为数据分析师、数据产品经理、数据开发工程师等与数据相关的工作者,学习Pandas能让你深入数据理论和实践,更好地理解和应用数据。
Pandas可以轻松应对白领们日常工作中的各种表格数据处理需求,还应用在金融、统计、数理研究、物理计算、社会科学、工程等领域。
Pandas可以实现复杂的处理逻辑,这些往往是Excel等工具无法完成的,还可以自动化、批量化,免去我们在处理相同的大量数据时的重复工作。
Pandas可以实现非常震撼的可视化效果,它对接众多令人赏心悦目的可视化库,可以实现动态数据交互效果。
以上这些强大的功能,在本书后面的学习中你会有所体会。
1.1.6 Pandas的基本功能
Pandas常用的基本功能如下:
- 从Excel、CSV、网页、SQL、剪贴板等文件或工具中读取数据;
- 合并多个文件或者电子表格中的数据,将数据拆分为独立文件;
- 数据清洗,如去重、处理缺失值、填充默认值、补全格式、处理极端值等;
- 建立高效的索引;
- 支持大体量数据;
- 按一定业务逻辑插入计算后的列、删除列;
- 灵活方便的数据查询、筛选;
- 分组聚合数据,可独立指定分组后的各字段计算方式;
- 数据的转置,如行转列、列转行变更处理;
- 连接数据库,直接用SQL查询数据并进行处理;
- 对时序数据进行分组采样,如按季、按月、按工作小时,也可以自定义周期,如工作日;
- 窗口计算,移动窗口统计、日期移动等;
- 灵活的可视化图表输出,支持所有的统计图形;
- 为数据表格增加展示样式,提高数据识别效率。
1.1.7 Pandas的学习方法
对于一个新工具,我们的目标就是能够使用它,让它发挥价值。因此,学习Pandas最好的方法就是用它处理自己熟悉的数据,并把日常工作中需要手动处理的表格用Pandas来处理。刚开始可能不能完全替代,但慢慢积累,就会得心应手。
在学习初期,只需要对着教程去模仿,总结和归纳涉及的常用操作,同时养成遇到不懂的地方查看函数说明和官方文档(https://pandas.pydata.org/docs/)的习惯。
本书侧重于Pandas的使用,故不过多地讲解数据分析方法,不过Pandas提供的数据分析方法给我们提供了广阔的数据分析思路,可以帮助我们建立完善的数据分析理论体系。
另外,本书不会把所有的执行结果一一展示出来,而是讲清楚代码的作用是什么,由读者举一反三,自己写代码并运行。
1.1.8 小结
在本节中,我们了解了Python是什么,能做什么,学习它的好处,为什么不选择R,还介绍了Pandas是什么,它适用于哪些领域、哪些人群。接下来,我们将搭建开发环境并开始使用Pandas。