想必大家在公司都要填周报,月报,季度报表,年度报表,朋友小乐在一家公司的财务部门工作,她每天需要整理20家公司的销售额还有员工的绩效表,她每天的状态是这样的:
有什么能够让她脱离苦海呢?
那当然是报表自动化了!
Excel
们知道利用Excel的数据透视表功能就制作该报表:选中数据表中任意一个单元格,点击插入数据透视表,然后按以下步骤执行:
- 将合同生效日字段放在页区域(筛选今年)
- 将用途字段放在列区域。
- 将单位字段放在透视表的行区域。
当处理到单位字段时我们会发现,表中每一笔贷款都有三家网点进行业绩分成。我们需要将分成比例也考虑进去。所以透视表中的行区域及值区域不能简单的放入单位1和贷款金额。此时大部分人都会想到先在数据源表格中添加三列按分成比例分成以后的贷款金额。
三个数值的计算方法分别为:
分成贷款金额1=贷款金额*分成比例1分成贷款金额2=贷款金额*分成比例2分成贷款金额3=贷款金额*分成比例3
然后将单位1及分成贷款金额1拖放到透视表的行区域及值区域。求出每个网点在分成金额1上的贷款投放,用同样的方法将各网点在分成贷款金额2及3的和。于是就会得到结构如下的三个数据透视表:
最后一步就是运用VlOOKUP将同一家网点的同种贷款金额整合相加到日报相对应的单元格里,实现最后的报表输出。
以上流程每天都需要进行重复:插入列、编写公式、做数据透视表、VLOOKUP,相信就算是熟悉Excel的人也需要华20到25分钟,而在操作过程中很容易因为疏忽而造成错误。
如此循环往复,效率低下并且出错率高。而从操作上来讲,整个流程都是标准化的,因此我们可以考虑使用Python进行自动化设计。
Python
3.1加载数据表
数据加载过程比较简单,使用read_excel()进行设置即可,这里不在赘述。仅提出以下建议,供大家参考,
- 利用read_excel()的usecols参数对表列进行指定,排除不必要的干扰列。
- 养成数据加载以后,使用head()进行预览的习惯。
- 养成使用shape及info()了解表格的基本情况的习惯。
import pandas as pd
from datetime import datetime # 因为后面需要处理到日期筛选,所以需要将datetime类从datetime模块中加载进来
data=pd.read_excel(r"E:\个人贷款客户信息表.xlsx",usecols=[1,4,6,7,