![编程菜鸟学Python数据分析](https://wfqqreader-1252317822.image.myqcloud.com/cover/98/50053098/b_50053098.jpg)
1.1 Python的特色
对于熟悉高级语言编程的人来说,Python可能并不是一个“规范”的语言。以变量定义为例,在一般的高级语言中,变量是需要预先定义的,例如:a是数据类型的变量,a的赋值为4;b是字符串型的变量,b的赋值为“Python”;c是日期型变量,c的赋值为“2020/1/11”等。以VBA编程语言为例,在如下代码中,变量a、b、c在VBA代码中分别被定义为整数型、字符串型和日期型变量。
![](https://epubservercos.yuewen.com/1D52E4/29427415804564006/epubprivate/OEBPS/Images/16_01.jpg?sign=1739327378-vKDYn7Demm8cxQa3lF3NH7TdZK2TEMzS-0-d0f48452dcd6e961dbfcb7a8c955209e)
![](https://epubservercos.yuewen.com/1D52E4/29427415804564006/epubprivate/OEBPS/Images/17_01.jpg?sign=1739327378-TnfNaj4RHRmcsvngShExSZfUIspxThXE-0-7d31070b48acf0e662354deb03a83915)
但是在Python代码中,变量是不需要预先定义的,示例代码如下(见本书配套的代码1-1.py):
![](https://epubservercos.yuewen.com/1D52E4/29427415804564006/epubprivate/OEBPS/Images/17_02.jpg?sign=1739327378-njuaM2WonEFA20PVFXQR4ME7CGs2wovK-0-0b9f131ca0caff975ac6362db01d5ea2)
注意
本书中介绍的代码后注明了在本书配套的代码中该代码的编号。另外,为方便起见,本书配套的代码在本书中采用了简化的表达方式,例如,本书配套的代码中的“1-1xxxx.py”,在本书中则简称为“代码1-1”。
从上述代码可以看出a、b、c变量并没有定义,而是直接赋值。
上面只是以变量定义为例说明了Python的一个特点,下面系统介绍Python的一些特点。
1.1.1 代码简单易懂
笔者在上Python培训课时,经常跟学员强调英语的重要性,如果开发人员的英语水平比较高,那么Python的代码是很容易看懂的,因为它基本上就相当于一篇英语小短文,示例如下:
![](https://epubservercos.yuewen.com/1D52E4/29427415804564006/epubprivate/OEBPS/Images/17_04.jpg?sign=1739327378-Q8HeBwGtfThOysOWhB42bqwLrLoXMViX-0-94a85b0110c7dfba545b124c92a2efad)
![](https://epubservercos.yuewen.com/1D52E4/29427415804564006/epubprivate/OEBPS/Images/18_01.jpg?sign=1739327378-B0XMIweYRHowSitmBi7Kd7cibUEnlHEh-0-3447f21456ba4169d319a356133f3a20)
对于上述代码,即使没有编程经验,看懂其大意也不是很难。其中的一些关键字,如open、load_workbook、for、range、sheetnames等,基本都可以望文生义。
Python代码比较简单快捷的另一个方面是对循环结构的简化。仍然以VBA为例,以下是一个VBA中的循环代码:
![](https://epubservercos.yuewen.com/1D52E4/29427415804564006/epubprivate/OEBPS/Images/18_02.jpg?sign=1739327378-pIBeKF4Q7ahiroTleFzmA9dS1cNqhOTd-0-93db0d48fef20877e2ee07812481a32c)
可以看出,在VBA中,循环体在关键字For和Next之间,也就是说,一个循环语句以Next作为循环的结束标志。对于多重循环,需要使用多个Next来终结。如下为内外两层循环的示例:
![](https://epubservercos.yuewen.com/1D52E4/29427415804564006/epubprivate/OEBPS/Images/18_03.jpg?sign=1739327378-AhNyCFwCiEzRiZY1CGf3MOfATBKMS2ea-0-3e56fef3f553d76fe8110120cf1205a8)
从上面的代码可以看出,VBA中的多重循环涉及For…Next语句的嵌套,而Python中则无须如此,见如下代码(见本书配套的代码1-2):
![](https://epubservercos.yuewen.com/1D52E4/29427415804564006/epubprivate/OEBPS/Images/18_04.jpg?sign=1739327378-mTJfaF3NIlLrKVvnkWhaulLv579nLI4W-0-6313c641c3d971f4502ba1e0c2792a4b)
从上述代码可以看出,Python中的多重循环要比VBA中的简洁很多。
1.1.2 包罗万象的Python包
对Python略有了解的人都知道,Python的最大特点就是它有无数个“包”(package,也称为库文件),那么什么是包呢?关于Python的包并没有一个官方的定义,可大致表述为:包是一个程序块的集合,可以实现一个相对独立的功能。
例如,我们要实现以下功能。
1)在指定的Excel文件中新增一个工作表,新增的工作表是该工作簿的最后一个工作表。
2)将该工作簿中指定工作表的内容复制到最后一个工作表中。
3)在最后一个工作表中,对A~D列的内容进行排序,以A列作为排序依据,并按照数字大小进行排序。
4)最后返回B列数据的中位数和数据个数。
在Python包的机制下,假如有人编写了程序段来实现上述功能,并且经过了严格的测试,提交到相应的平台上审核通过后,就可以形成一个程序包,并且该包会放到Python官网上供其他人下载使用。
所以,有了包这个共享机制,很多事情我们都不用自己做,只需要去Python官网上搜索相应的包并调用即可,这就极大地方便了我们的工作。
再举一个生活中的例子进行类比。除了少数汽车行业的人之外,绝大多数司机并不懂汽车发动机和变速箱的原理,但是这并不会影响我们开车,因为汽车制造商把发动机和变速箱都封装起来了,司机只需要进行一些简单的操作就可以驾驶汽车。
Python包的官网地址是pypi.Python.org,图1-1所示是Python包的官网界面。
![](https://epubservercos.yuewen.com/1D52E4/29427415804564006/epubprivate/OEBPS/Images/19_01.jpg?sign=1739327378-MYJtMV4PZzX6Le0YbNEQcctPVIzs2sDC-0-477d272bccc906e084badbb4dbffb798)
图1-1 Python包的官网界面
以数据分析包pandas为例,在图1-1所示的界面搜索栏中输入pandas并单击搜索图标,图1-2所示是在Python官网中搜索pandas得到的结果。
![](https://epubservercos.yuewen.com/1D52E4/29427415804564006/epubprivate/OEBPS/Images/20_01.jpg?sign=1739327378-zklTTQow7YW1X50QrKEhb55GEWInN9AB-0-e3de0c9fa9e65969daaea1e6398aea79)
图1-2 在Python官网中搜索pandas的结果
据Python官网介绍,Python目前有40多万个包可供下载使用,这是一个庞大的包罗万象的包的集合。
1.1.3 超高的知名度和广泛的应用面
学习Python的一个巨大好处是Python是一个通用平台,这与Python平台的开放性和共享机制有关。Python在办公自动化、数据分析和挖掘、机器学习、人工智能等方面具有巨大的优势,对行业的覆盖面也很宽,从快消到金融、制造、政府部门等,Python都有其用武之地。
据笔者在培训和咨询中得到的消息,近年来Python的崛起对一些传统的数据分析软件(如MATLAB、SAS、SPSS等)构成了严重的威胁。相对于Python而言,这些软件收费高,而且有部分软件每年还要收取维护费用,而Python是开源、免费的,后续也不涉及维护费用。
免费且功能强大,使得Python获得了超高的知名度,现在有不少企业,尤其是金融企业,都希望员工能够掌握和运用Python语言。