11,102
社区成员
终于,电子表格它来了。对于运用、财务、行政等岗位,日常工作中电子表格的文件管理和表格数据处理放在谁头上都是最重的活,而对于数据分析行业,电子表格数据处理和数据分析也是数据工程师的入门级技能。
对于表格文件管理这一块,大部分的工作用我们前面任务掌握的技能就能解决,而一旦涉及到具体数据内容,我们就需要专门来学习一下表格的相关知识了。
首先我们应该要具备一些常识,一提到电子表格大家首先想到的是微软Office中Excel软件默认保存的数据文件格式(xls/xlsx),但实际上常用的表格数据格式远不止如此。
其中XLS/XLSX和XLSM/XLSB都是出自微软,由于office数据协议的开放,目前XLS/XLSX已经成为了电子表格软件的实际数据标准,包括各种网页插件,客户端插件和openoffice软件,#都能很好的支持XLS/XLSX文件;至于XLSM/XLSB以及苹果家的Numbers,使用了大量自家支持的技术,因此对于需要批量处理数据的办公场景(编写python自动化脚本的场景)兼容性不是太好,因此如果需要用脚本自动化处理的任务,尽可能将表格文件另存为XLS或者XLSX格式。xls最大支持256列,最大65536行,XLSX可以存储16384列,1048576行数据。
CSV/TSV是使用纯文本方式记录数据,这是兼容方式最好的表格文件,几乎所有的编程语言和表格软件全部都能很好的支持,即便没有第三方库,程序员手动编写代码读取难度也不大,并且作为纯文本,没有文件大小限制,即便是放在大数据环境下,无论数据分片存储还是分布式计算都非常容易,因此专业工程师使用表格数据,首选CSV或TSV。
要想用程序脚本操作表格,我们必须对表格的结构了如指掌。一个表格,通常由以下这些部分组成
WorkBook(工作簿):很多windows用户习惯在桌面新建一个XLSX表格文件,通常一个文档就是一个工作簿。
Sheet(工作表):一个XLSX中可以包含多张表工具表,Excel软件中,通过窗口底部的选项卡可以进行工作表的切换。
Column(列):表格中竖着排成一队的数据称为一列
Row(行):表格中排成横排的数据称为一行,工程师有时也会把一行的数据称为Record(记录)。
Cell(单元格):表格中填写数据的最小格。
Index(索引/序号):通产表格中每一行都有一个序号,来记录当前Record在表格中的位置。
Title(标题):表格中的每一列都可以有自己的标题,一般表格只会针对每一列设置标题,标记行通常用序号比较多。
在实际使用XLSX的时候,我们可以针对行、列、单元格设置很多属性,比如边框、对齐方式、字体字号等,尽管这些东西全部可以通过程序来设置,不过作为工程师,我们真正关心的是数据。
表格中写入数据是区分数据类型的,这些数据类型包括:
在软件中虽然把数据格式分为了12类,但很多都是为了方便人们阅读,在工程师的眼中实际上这些数据只有两类:
数值、 货币、会计专用、日期、时间 、百分比、分数、科学计数等数据类型本质上都是数值。文本、特殊等类型本质上是文本。
在单元格中录入数据时,如果输入内容中包含中英文字符、标点符号等字符,单元格会把数据当成文本来处理,如果输入的数据是完全由数字组成,则单元格会把数据作为数值保存。
新人使用电子表格遇到有些情况很容易出错,比如下面的场景:
我们可以看到遇到这种情况,尽管输入的所有数据都是由数字组成,但本质上,他们应该是作为文本来保存,而不是当作数字。
如果要争取的处理输入类型,我们可以选择以下方法:
可以从以下三个任务中选择一个,设计自己的电子表格并录入数据,后面的编程任务中我们将会用到这些表格和其中的数据。
和前面图片处理一样,python核心库没有直接对电子表格做支持,但是python社区中有很多好用的第三方库,可见对于处理电子表格的需求非同一般。
常用的电子表格处理工作可以从以下三方库中做出选择:
在常见的这些python第三方库中, xlrd/xlrwt, OpenpyXL, XLUntils, XLSWrite, xlwings都以提供表格操作能力为主,但pandas不一样。
Pandas,在兼容性方面,它甚至不支持xls文件的格式调整,也无法在表格中插入多媒体数据(如图片),不过pandas在数据分析和数据处理上的能力十分出色。
xlrd/xlrwt与xlwings支持最多的数据表格式类型,支持最多的表格内操作方法,因此要对现有表格数据格式进行调整,修改现有数据,且数据格式版本各异的情况下,使用xlrd/xlrwt或xlwings可能是最好的选择。
如果需要处理的电子表格都是office2007以后版本制作的电子表格,且不需要程序广泛兼容,那么选择OpenpyXL或XLUntils、XLSWrite你会便利很多。
如果要做大量数据处理,数据统计与数据分析,那么应该首选pandas。
###探索任务
从刚才介绍的第三方表格处理模块中选择至少两个不同的模块去读取我们自己制作的表格文件的内容,通过控制台输出。
我们将在下一个任务中综合运用之前学到的技能完成对多个电子表格的数据处理与统计分析。
Day6练习作业:
详细阅读学习任务,完成电子表格制作(三选一)
作业提交
你可以这样做(任选其一):
1.将实验过程中遇到的问题、你的思考和想法整理成文字帖提交
2.录一个操作过程的视频放在帖子中提交
3.把你完成操作的代码结果拍照,照片放在帖子中提交
提交作业步骤:
1.进入 Python 全栈技术社区
2.点击右侧 “发帖子”,发布练习作业的内容,频道选择【7天学习】(标题格式:7天学习—dayX—标题)
3.进入Day6学习任务帖,点击“提交任务”按钮
4.填入发布作业的帖子链接后,确定提交
作业提交截止时间:
2021/9/25 19:00