Python培训
400-996-5531
编程应该作为必修加入小学生课程表,这是思维方式的锻炼。
——沃·兹基朔德(借梗)
离开代码也有快两年了。期间其实一直有重新拾起的想法,只是没有模板刺激的动力,加上又懒…
刚好这段时间项目进入一个阶段,一方面需要对上个阶段的产品进行数据分析和整理,另一方面多了一些空闲时间,借此机会学习学习Python。
1. 需求
BI给的数据报表比较原始,在excel里以多个sheet的形式出现,且对应的指标使用的是开发变量名称,可读性较差。
当前目标是通过Python读取BI生成的数据日报,然后以日期为横轴,数据指标为纵轴重新输出一份可读性强报表。
2. 流程
第一步,安装环境
关键词:Mac+Python安装
Mac上其实自带Python,但是好像有一些问题。现在安装Python很方便,有完全自动化的处理方式。
教程:#/mac-osx-python3-dual-install/
第二步,Python的能力
关键词:Python + Excel处理
编程语言大道万千殊途同归,由于已有编程基础,Python作为脚本语言语法也比较简单,因此准备直接从实际项目开始学习。
首先思考的是,Python作为知名的「擅长数据处理」的语言,是否支持处理Excel表格(肯定是支持的…那是否需要额外安装一些库呢?)。
答案是需要。不过已经有不少库能够做到这件事,我本次是根据教程选择的xlrd(表格读取)和xlwt(表格输出)
接下来要做的事情是读取Excel和重新生成Excel。
教程:http://blog.csdn.net/cloudox_/article/details/53812213
直接复制教程代码,在Terminal中运行测试。
成功~而且代码注释已经十分完善,根据函数名称、变量名称和注释,能够很清晰的理解Excel库的工作原理。
第三步,处理简单的数据日报Sheet
关键词:活学活用
了解了基础的Excel行列读取操作后,就可以直接进入正题了。
第一个Sheet很简单,3列数据分别是日期、UV、PV。导出的表中有最近七天的数据。
这个Sheet的结构和教程一模一样,因此只需要在教程代码的基础上修改变量名称就能够实现输出。
第四步,整理纵向表
关键词:'合并+过滤'
数据日报有很多Sheet,其中可以分为两种结构。
第一种是和教程结构一样,第一列是时间,每一行代表每一天的数据。
第二种是横向的,每一行代表今天某项目的各组数据。
从简到难,先把第一类的Sheet搞定。刚刚已经成功解决了一个Sheet,剩下的只需要类似处理即可。但是这里又有一个问题——为了方便阅读,我需要把各个表的数据导出到一个表里,避免反复切换的情况。
解决:这个操作其实非常简单,我们只需要把「读取表-生成表」这个流程修改为「读取表-读取表-读取表……-生成表」即可,即在最后一个表的数据读取完之前,所有的数据线先存在一个列表里不输出,等最后读取结束后再统一输出。
问题:此时会遇到一个问题,因为在原表中,每一个Sheet的第一列都是时间。这样生成的新表就会多出很多重复列。事实上我们只需要第一列时间——也就是过滤第一个表之后所有表的第一列数据。
解决:根据表结构可以很容易就能想到,只要在第一个表之后,每次都从第二列开始读取,就能够过滤多余的时间列。
问题:数据日报在生成第一类结构的数据时,事实上是会给出7天内的所有数据。那么在之后其实我只需要当日数据即可,如何过滤掉不需要的数据呢?
解决:过滤日期,也就是说「只需要第一列是今天的数据」。代码处理数据的逻辑是从左到右从上到下——也就是说一行一行的处理。那我们要做的事情就是,当发现本行数据的第一列(日期列)的值不等于今天的时候,就直接忽略此行(不添加到存储列表里)。
注意咯,由于我们在上一个问题中忽略了第一个表之后的日期列,在这个问题中我们需要重新使用此列进行判断——当然,无论本行是否是今日数据,日期列仍然不会输出到存储列表中。
为了方便处理,我们使用一个today变量输入今天的时间(未来可以自动获取)。
第一类纵向表格处理起来比较简单,都是在教程代码的基础上修改完成。
第二类表格的处理方法我们下次再说。
对了,Python有个重要的地方是字符编码问题,当使用中文字符串时,请务必前面加一个关键字u,代表Unicode编码,否则会出现读取错误。
作为一篇比以往更流水账的文章,其实目的只是为了重启「写作」这个动作。
之前因为想要追求较高的文稿质量,导致时间花费太多,一旦没有时间就状态中断。这次重启计划其实没有什么预期,只是临时决定然后想要不拖延一次而已。
无论如何,在没有写作能力的阶段,写下来,肯定比写得好更重要。
不要排版,不要质量,试试能够坚持多久。
填写下面表单即可预约申请免费试听! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!
Copyright © 京ICP备08000853号-56 京公网安备 11010802029508号 达内时代科技集团有限公司 版权所有
Tedu.cn All Rights Reserved