深入浅出Pandas:利用Python进行数据处理与分析
上QQ阅读APP看书,第一时间看更新

1.1 Pandas是什么

很多初学者可能有这样一个疑问:“我想学的是Python数据分析,为什么经常会被引导到Pandas上去?”虽然这两个东西都是以P开头的,但它们并不是同一个层面的东西。简单来说,Pandas是Python这门编程语言中一个专门用来做数据分析的工具,它们的关系如图1-1所示。接下来我们就说说Python是什么,Pandas又是什么。

018-1

图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 Meiers 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。