前言
为什么需要使用Python分析Excel数据
在使用传统办公软件进行数据分析的过程中,使用最多的莫过于Excel。但是随着移动互联网时代的到来,数据也越来越多,因此,在很多场景中使用Excel进行数据分析就越来越难,主要的难点集中在以下3个方面。
• Excel只能处理少量的数据,经常使用Excel的用户应该都发现过这个问题,当Excel的数据量过大时,其查询和计算速度会明显下降,甚至无法正常运行,这对于实际工作来说是不可接受的。
• Excel的功能是有限的,而通过编程可以获得更多的功能。
• Excel需要手动反复操作,需要的时间长,并且容易出错,而编写的程序通过反复验证之后,效率可以大幅度提高,并且不易出错。
在移动互联网时代,数据量日益增加,加之业务趋向于复杂化,越来越多的业务人员已经无法只通过Excel来做业务分析,他们需要更快速且复杂的解决方案,此时Python就出现在他们面前。
与传统语言不同,Python更容易学习和使用,门槛较低,很快就成为时代的宠儿,只用简单的十几行代码,甚至几行代码就能够完成所需要的数据分析,使得业务人员通过自己编写代码完成数据分析成为可能。因此,那些需要做大量数据和复杂业务分析的办公自动化岗位从业人员都开始要求学习Python+Excel,这就是我编写本书的原因。
我和数据分析的缘分
我是一个拥有十余年计算机软件编程经验的工作者。毕业之后,我在一家从事银行金融软件的公司工作,主要为银行出具各类统计分析报表,经常和各类数据分析打交道。我当时主要使用Java和数据库编写程序,为银行出具各种报表。这一工作给我带来的最大体会是,只有对银行的各类业务进行深入且专业的学习,才能编写程序完成工作。每次完成工作时,我都感到心满意足,但是银行对报表不断有调整,加上银行内部业务需求的变更,直接导致我需要重新熟悉新的需求之后才能进行开发。因此,只要业务发生变化,就会引发数据分析新的需求,由此可见,数据分析工作会一直继续下去。
虽然我已经毕业十多年了,但是这些经历让我对数据分析有了深刻的认识。我始终都坚持一个观念——数据分析最好由业务人员负责,否则成本会很高。这是因为第三方程序开发人员及其开发的业务系统存在以下几方面缺点。
• 程序开发人员不懂业务,需要深入学习业务知识之后才能进行开发,涉及专业问题时再与业务人员进行沟通,效率一般不会太高,因为需要解释很多专业知识。
• 请第三方开发系统成本高,毕竟软件开发是比较深奥的工作,并且开发成本较高,周期也较长,很多时候并不能及时处理业务。
• 系统开发完成后就会进入维护期,这段时间系统的功能相对固定,很难满足临时提出来的新需求,即便再找程序开发人员来增加功能,也很难保证时效。
因此,对于一些不是特别复杂的数据分析,我建议由业务人员来做。当需要大规模开发时,则由专业的软件公司来做。这样既有助于降低成本、提高灵活性,又能保证数据分析的时效性。
本书的安排
本书按照一本通的要求来编写,尽量使读者可以通过这一本书就能学习和掌握Python+Excel办公自动化的应用,所以本书的内容分为3部分。
• Python 3.9语言基础:第1~10章,主要介绍Python的安装、数据结构、语法和一些常见的原理和应用,为后续的学习奠定基础。
• Excel数据分析:第11~16章,主要介绍Excel的处理(xlwings)、数据分析库(NumPy和Pandas)和绘图库(Matplotlib和Seaborn)。
• Excel数据分析实践:第17和18章,通过对电商销售数据和个人贷款案例的学习,读者不仅可以回顾前面的知识,还可以通过实践提高数据分析和绘制图表的能力。
本书使用的各个库的版本如下:Python 3.9.0、xlwings 0.23.2、NumPy 1.20.3、Pandas 1.2.4、Matplotlib 3.3.3、Seaborn 0.11.1。
本书的读者
本书是使用Python实现办公自动化的书籍,既适合有一定Excel基础,想进一步提高工作效率的办公人员阅读,也适合需要在日常工作中处理大量和复杂数据的办公人员阅读。本书从Python基础展开介绍,并且涉及应用与实践方面的内容,因此也适合Python初学者阅读。
如何阅读本书
我其实也是Python+Excel的新手,我十多年的工作经验主要是Java和数据库开发。由于我是计算机从业人员,编程经验丰富,而计算机语言是相通的,所以相对来说,我学习Python就比较容易。其实,Python数据分析库在很大程度上和数据库的思想是接近的,因此我可以快速掌握数据分析知识。在编写本书时,我也是一边学习,一边实践,小心求证,并结合了我在工作时遇到的场景和问题。
学习编程不是一两天的事情,也没有捷径,对于初学者来说,我建议先学好Python基础和数据分析库基础,然后进行实践。我之前接触的学习编程的初学者大部分存在4个比较严重的问题。
• 第一,眼高手低。有些初学者说他很快就看完书了,我直接回复他,这样就等于没有看过,因为学习编程是实践问题,而不是看的问题,只是看过而没有实践过一律可被归结为零,因为看的过程不会了解其中很多的细节和精妙之处。
• 第二,不能正确地对待错误,在遇到错误或异常时,很多初学者过于沮丧,会选择放弃或依靠他人。在我接触的初学者中,经常有人想都不想就提问,其实这是错误的方式,在发生错误或异常时,首先要做的是查看程序的异常,从而定位问题,其次进行调试,通过监控变量来定位是哪一步走不通,而不是直接向他人请教,学会定位错误比采用正确的方法更重要,因为正确的方法是“鱼”,而定位错误的过程是“渔”,“授人以鱼不如授人以渔”。而事实上,每个人都会犯错误,更何况是初学者。我现在写代码犯错少了,那是因为以前我犯的错误很多,有经验了而已。所以,面对错误是每个编程初学者的必经之路,没有什么值得恐惧的。
• 第三,思而不学。有些初学者没有认真学习书中的内容就根据自己的想法来编写代码,而自己的想法却是错误的。如果你是初学者,那么我建议先学习其他人成功的案例,而非自己的想象,做好了别人的成功案例,就可以建立信心,学习效率也会提高,然后弄明白原理,才能发散自己的思维,毕竟“思而不学则殆”。
• 第四,看不懂而不做。本书中的案例大部分都是可以运行的,在看不懂时,读者可以先“抄袭”,然后自己运行,或者直接调试源码也可以运行。运行起来以后你就会有信心,然后探索原因,而不是什么都不做,傻傻地看不懂,这样是不会进步的。
在学习本书时,只要解决这4个问题,相信你就会事半功倍。古人云:“拳不离手,曲不离口。”学习编程更是如此,要想提高自己的编程能力,肯定需要不断学习和实践。
由于作者的能力和时间有限,书中难免存在不足之处,如果您发现了,请发邮件至ykzhen2013@163.com或与出版社联系,以方便本书后续的修订。
杨开振