其实大部分公司的数据分析,用Excel绰绰有余。Excel的功能相当强大,除了在数据量大的地方有弱势之外,像操作性和可视性,都是很强的。但是,如果不用VBA,其实每天手动操作的重复性很强,比如条件求和、条件计数、数据透视表什么的。

每天的报表,如果只需要更新数据源就可以得到,那么为什么不用Python来自动化处理?

接下来,我们就看看,怎么用Python代替我们做一些重复性强的工作。

第一步,就是要知道,Python它到底怎么读取Excel文件的。所需工具:Anoconda、Excel。(可参考这篇文章下载及安装anaconda:anaconda介绍及安装)


咱们以一个数据表作为例子:

这里有一份订单数据,包含:订单时间、城市、商品名称、价格、状态、代理商,共6个字段。

每天需要向部门领导汇报这样的数据:

目标城市是指一些特定的城市,共50个:

如果用Excel处理的话,需要用到:分列、sumif、countif、vlookup等,稍不注意可能会出错。

那我们得用Python帮我们处理。

Python读取Excel文件

import pandas as pd  #导入pandas库
import os
os.chdir(r'd:Pythontest')   #更改路径data=pd.read_excel('data.xls')         #注意后缀是xls还是xlsx

处理文件

在将源数据读取之后,我们可以用type(data)来查看数据的类型

采用这种方式读取Excel文件之后,返回的是一个dataframe类型,我基本上都是用pandas这个库,这个库功能的强大,大家可以慢慢了解,了解之后就会爱上。

接下来,看看我们的目的,是为了自动计算想要的数据:

  1. 时间格式处理

由于原始数据的时间是字符串格式,如果按天进行计算的话,需要分列成“日期”“时间”,我们保留“日期”列:

#日期处理
data['日期']=[x.split(' ')[0] for x in data['时间']]  

2. 判断是否在目标城市

#目标城市读取
cities=pd.read_excel('目标城市.xlsx')
cities=list(cities['城市']) #转换为列表格式#新增判断列,在目标城市为1,不在目标城市为0
data['是否在目标城市']=None
data.loc[data['城市'].isin(cities),'是否在目标城市']=1   #在目标城市设置为1
data.loc[data['是否在目标城市'].isnull(),'是否在目标城市']=0   #其余设置为0

3. 条件求和、计数,存入Excel

#各渠道,按天汇总 制成表格并存为excel文件
writer=pd.ExcelWriter('数据汇总.xlsx')
starts=0    #从第一行开始写入数据
agency=data['代理商'].unique()
for i in agency:data_agency=data[data['代理商']==i] order=data.groupby('日期')['城市'].count()  #每日总订单量sold=data.groupby('日期')['价格(元)'].sum()  #每日售出金额order_target=data[data['是否在目标城市']==1].groupby('日期')['城市'].count()  #每日目标城市订单量sold_target=data[data['是否在目标城市']==1].groupby('日期')['价格(元)'].sum()  #每日目标城市售出金额#整理成表table=pd.concat([order,sold,order_target,sold_target],axis=1)table=pd.DataFrame(table)table.columns=['总订单量','总售出价格','目标城市订单数','目标城市售出价格']#写入Exceltitle=pd.DataFrame(['代理商: '+i])  #将代理商名称设置为小标题title.to_excel(writer,startrow=starts,index=False,columns=None,header=False)  table.to_excel(writer,startrow=starts+1)  #写入对应代理商的数据starts=starts+len(table)+3   #下一个代理商的写入位置
writer.save()  

看看单独某个代理商的数据表:

差不多是这些数据了,然后将所有代理商的数据,存入至Excel文件,最终得到的数据如下:

生成报表

嗯,这下程序写好了,每天就是更新一下数据源,然后点一下运行程序,数据就出来了。空出来的时间,可以拿来优化一下报表的外观,让报表好看些,是吧?

好吧,我尽力了,还是得多看看报表的美化。


以上例子的数据、代码,可以在百度网盘下载哦:数据、代码下载

扫码关注公号

python列表两两相减_【数据分析入门】之:如何用Python代替Excel(1)相关推荐

  1. 类型两个数相减_小学数学简便计算12种分类+5种易错类型,打印出来给孩子练习!(可打印!)...

    简便计算对于小学生来说是个难点,也是最容易出现错误的题型. 简便计算题型 1.同种运算想交换律和结合律:交换就是为了结合. 2.有乘有加(或有减)有相同数,要想乘法分配律,无相同数找倍数关系变相同数用 ...

  2. 两个年月日怎么相减_(excle可以计算日期差值吗)excel表中,两个日期相减如何得出相差年月...

    如何使用excel函数计算两个日期参数的差值 "使用excel函数计算两期参数的差值"的操骤是: 1.以Excel 2016为例,打开Excel工作表: 2.由已知条件可知,需要根 ...

  3. excel 两组数据交点_数据分析入门:8种常用的数据分析方法

    分析数据是将收集的数据通过加工.整理和分析.使其转化为信息,通常用方法有: 排列图 排列图是一种找出影响产品质量主要因素的图表方法. 其结构是由两个纵坐标和一个横坐标,若干个直方形和一条折线构成.左侧 ...

  4. 两种方法求解 正数数组中 两个数相减 的最大值

    一,问题描述 给定一个正数数组arr(即数组元素全是正数),找出该数组中,两个元素相减的最大值,其中被减数的下标不小于减数的下标. 即求出: maxValue = max{arr[j]-arr[i] ...

  5. “数学黑洞”:任意一个4位自然数,将组成该数的各位数字重新排列,形成一个最大数和一个最小数,之后两数相减,其差仍为一个自然数。重复进行上述运算,最终会出现一个神秘的数,请编程输出这个神秘的数。

    "数学黑洞":任意一个各位不相等的4位自然数,将组成该数的各位数字重新排列,形成一个最大数和一个最小数,之后两数相减,其差仍为一个自然数.重复进行上述运算,最终会出现一个神秘的数, ...

  6. 让微积分穿梭于工作与学习之间(31):无穷-无穷,两根式相减的求解套路

    这篇的内容无异于上学时大家做到吐血的数学习题,此处插播一篇纯习题的文章,仅为后续的一个应用打下基础. 在微积分课程介绍极限的章节中,教材会给出无穷-无穷&两根式相减这一类极限的例子,并给出利用 ...

  7. js 两数相减得到精确的减法结果 减法函数

    下面原因是这样的造成的,在计算运费的时候两数相减会有误差,这在js中是常见的,为解决以下问题可以写的函数方便解决问题 1.5 - 1.2 = 0.30000000000000004 解决之后的 uti ...

  8. python列表两两相减_Python数据分析实例一:医院药品销售数据

    前面已经分享过python的基础语法,以及数据分析领域最常用的两个包:Numpy和Pandas(戳下面的链接),下面将用一个实际案例:<朝阳医院2018年销售数据.xlsx>和大家分享一下 ...

  9. python列表两两相减_笨办法学python(二)数值、变量以及运算

    第二课提纲 一.注释 单行注释 # 多行注释 ''' 二.变量 变量声明 内存管理 变量类型 type(x) isinstance(x,int) 三.数字运算 实数相加减 复数相运算 四.运算符与表达 ...

  10. python列表两两相减_用Python做打字软件,让你的打字快如闪电!附超详解和源码链接

    版本正在更新--,目前1.3.2 项目结果 GIF制作十分粗劣,自己看着都揪心,不过基本看清楚了 详细解释 下面我会详细解释一下,如果不看,就不看吧,直接向下看源码,传送门 基本结构+标题标签+提示+ ...

最新文章

  1. 看菲菲详解如何快速获取linux命令帮助
  2. 论坛服务软件Discux_X3.4的部署
  3. forward 方法详解 java_详解Java从后台重定向(redirect)到另一个项目的方法
  4. SAP Spartacus的cxComponentWrapper指令
  5. 前端jQuery基本语法
  6. Android之使用HttpURLConnection类查看网络图片以及网络源码
  7. 《Go 语言程序设计》读书笔记 (九) 命令工具集
  8. java design pattern
  9. linux下qt制作日历,基于QT的多功能日历设计与开发.doc
  10. Spring中AOP注解实现
  11. java 令牌解析_Java JWT的令牌机制
  12. Android 打开蓝牙流程
  13. 未开启3389实现远程桌面
  14. 九款好看的后台管理系统登录模板
  15. 软件需求分析文档模板
  16. python显示图片_python Image 模块处理图片
  17. 如何将wav文件切成多个子文件
  18. 视频直播APP源码,通过css控制div内容展开更多/收起效果
  19. 基于自适应形态学的探月雷达噪声压制方法
  20. 初等数论 - 定理证明

热门文章

  1. 实时大数据处理real-time big data processing (RTDP)框架:挑战与解决方案
  2. ds5100更换电池 ibm_IBM DS5000系列更换电池
  3. layui生产管理系统_分享两款Java Spring框架的开源MES制造执行系统
  4. 【GAMES-202实时渲染】3、预计算环境光照(球谐函数(SH)、IBL、Split Sum、环境光阴影计算(PRT))
  5. 解析DELLR710服务器迁移操作内容
  6. c语言atm程序个人总结,自己写的ATM模拟程序
  7. Codeforces Problem-1593A Elections
  8. Synchronized Lock 锁 同步
  9. Java回炉学习(七)
  10. 行测测评(二)——图形找规律技巧