python自动化报表-Python报表自动化
实现Python报告自动化这是上周做的最有激情的事情咯,做这件事情的目的:第一、熟悉python之前也有用但是一段时间不用就生疏了,第二、提高工作效率,做好了个人每天能节约十几分钟,随着在公司的推广节约的时间也会越来越多(不好推),下面看看整个的流程:
没用Python之前的流程
早上工作流程:
第一:各平台下载前天的订单数据并放到相应的位置
第二:平台数据复制到各平台的统计表中并匹配出日期、产品型号,并算出每个产品的销量和销售
第三:把销量、销售额数据复制至全网销量统计表和全网销售统计表中;
以上三步花二十分钟当天的基本工作算是完成了;
用python后的流程:
第一步:各平台下载前天的订单数据并放到相应的位置
第二步:利用当天日期函数datetime -1 得到日期,利用日期+os模块在相应的文件夹中找到相应的数据,并把数据读取为dataFrame ,这一步会得到 原始文件的dataFram和date
第三步:读取相应门店的型号对照表为dataFrame 并把原始数据的dataFrame和对照表的dataFrame中的“商品id”列的类型转为字符串类型;
第四步:利用pd.merge函数左连接匹配原始文件和型号对照表,匹配出每个订单的型号并加上日期列,这里当原始数据表的型号没有全部匹配出来时,把没有匹配出来的数据输出到型号对照表中,在型号对照表添加相应的型号后重新匹配处理,当全部匹配出来后把数据按特定的顺序写入到相应店铺统计表中,同时选出相应的列根据金额排序后写入到全网销量统计表和全网销售表中,到这里大概就完成了利用python进行数据统计了,各个平台的数据统计方式不太一样,根据计算方式用python对原始数据进行处理就好。下面看具体的代码:
第一:根据输入的数字找到相应的文件并读取为dataframe函数
def time_file(number,url_1,url_2=folder_10):
statistical_date=(datetime.datetime.now()-datetime.timedelta(days=number)).strftime("%Y-%m-%d")
mm=statistical_date[5:7]+"月"
file_list_url=url_1+mm+folder_10
url=file_name(file_list_url,statistical_date)
#url_3="【生意参谋】商品效果-"+statistical_date+"-"+statistical_date+".xls"
#url=url_1+mm+url_2+url_3
"""
if url==None:
print ("没有相应的文件,请添加文件")
return
print("处理文件的日期为:",statistical_date)
print("处理文件的路径是:",url)
try :
df=pd.read_excel(url,header=3)
print("文件已读取为df")
#转变“商品ID“的类型
df["商品id"]=df["商品id"].astype(str)
return df,statistical_date
except IOError:
print ("没有相应文件 ")
def file_name(file_dir,date):
flie_list=[]
for root,dirs,files in os.walk(file_dir):
flie_list.append(files)
for i in flie_list[0]:
b="".join(i)
if date in b:
return file_dir+b
第二:把数据写入全网销量、全网销售的数据
#功能传入日期和原始文件的df 自动处理文件
def tianjia(date,df,tiaomao_file,dianpu,xinghao=taoxixinghao):
#第二步读取型号对照表
xinghao=pd.read_excel(taoxixinghao)
xinghao["商品id"]=xinghao["商品id"].astype(str)
df_1=pd.merge(df,xinghao,how="left",on="商品id")
df_1["日期"]=date
df_1.insert(0,"型号",df_1.pop("型号"))
df_1.insert(1,"日期",df_1.pop("日期"))
df_nan=df_1.loc[df_1["型号"].isnull()]
if len(df_nan)>0:
df_nan=df_nan.loc[:,["商品id","商品标题_x","商品链接_x"]]
df_nan["店铺"]=dianpu
df_nan.insert(0,"店铺",df_nan.pop("店铺"))
df_na=df_nan.reset_index()
df_na.pop("index")
df_new_sheet(taoxixinghao,"商品效果",df_na)
print("型号没有全部匹配出来,请在型号表添加相关型号")
else:
t=[]
for i in range(len(df.columns)+2):
t.append(i)
df_2=df_1.ix[:,t]
#将数据添加天猫统计表中
print ("开始把数据写入店铺统计表文件")
df_new_sheet(tiaomao_file,"所有终端",df_2)
print ("写入店铺统计表完成")
#数据添加至全网销量统计表中
df_1["店铺"]=dianpu
df_3=df_1.loc[:,["店铺","日期","型号","支付商品件数","支付金额"]]
df_4=df_3[df_3["支付金额"]>0]
df_5=df_4.sort_index(by=["支付金额"],axis=0,ascending=False)
df_6=df_5.reset_index(drop=True)
df_new_sheet(quanwangxiaoliang,"所有终端",df_6)
print("已把文件出入全网销量表")
第三:辅助表 把dataframe从指定的xls最后一行开始写入
#功能把dataFrame新增到xls文件中(只能是xls文件)
#从xls表最后一行新增加dataframe数据
#excel_through 为工作薄路径和工作薄名
#sheet操作的工作表
#data 要写入工作薄的df
#这里要工作薄文件格式要为xls文件
def df_new_sheet(excel_through,sheet,data):
#打开需要操作的excel表
ooutfile=excel_through
wb=xlrd.open_workbook(ooutfile) #保留原格式formatting_info=True
#复制原有表
newb=copy(wb)
#获取原有excel表中的sheet
sumsheet=newb.get_sheet(sheet)
#k表示该sheet的最后一行
k=len(sumsheet.rows)
#获取df的行数和列数
hang=len(data)
lie=len(data.columns)
#循环数据放入sheet中
for i in range(hang):
for x in range(lie):
sumsheet.write(k+i,x,data.ix[[i]].values[0][x])#K 行 0列
newb.save(ooutfile)
注意点:1、型号对照表中每个“商品id”都要是唯一的,不然相应的型号会重复匹配,之前就遇到这个坑;2、“商品id”类型要转为为字符串类型
这是最简单的python利用了吧,接下来所有表格的数据都改为python处理,同时把数据导入mysql中,接下来玩Python+MySQL+机器学习啦! 最近有了一个学习对象,有个同事每天9点之前到公司,晚上11点之后回住所基本上没有休息,期间都是在各种学习并把学到的知识用于提升工作效率,了解他之后打破了我自认为很努力的幻觉,自己学习到8点就以为自己很努力拉,跟他一对比真的不算什么了,虽然个人提倡工作也是为了更好的生活,但是自己努力程度明显不够,有些人你见到了就算是长见识了,这算是见到活人的力量咯,接下来希望跟他一样好好学习,早日做出成果出来,当然工作之余不会忘了追追妹子+锻炼身体咯。
python自动化报表-Python报表自动化相关推荐
- python 自动化出报表,python实现报表自动化详解
本篇文章将介绍: xlwt 常用功能 xlrd 常用功能 xlutils 常用功能 xlwt写Excel时公式的应用 xlwt写入特定目录(路径设置) xlwt Python语言中,写入Excel文件 ...
- python sqlserver 列名_报表自动化,三流用Excel,二流用Python,一流用它
从事数据工作的人都知道,企业每天都要做很多报表,这个过程当中会涉及到很多手工操作和常规性报表.为了减少人工介入,节省工作时间,我们会想办法将一部分操作用工具或代码来替代,这个过程就称为报表自动化. 报 ...
- python excelwriter保存路径_Python自动化处理Excel报表,我的工作更轻松了!
没有转义的Excel! Excel无处不在,即使我们使用了Python之类强大的辅助工具,依然无法摆脱Excel.因为你的老板和同事仍然需要方便的方法来访问重要数据.但是,这并不意味着你不能通过使用P ...
- BI自动化之Python自动发报告(查询数据库生成报表和图片嵌入邮件)
先看看效果图 代码: 1.生成图片 新建generate_picture.py,主要功能是查询数据库,生成图片和附件用于嵌入邮件 我这里的数据库是阿里的Maxcompute数据库,如果是SQL Ser ...
- python制作数据库报表_如何制作数据报表并实现自动化?
定期的数据报表,包括日报.周报.月报.半年报.年报,是每一位数据运营或数据分析师可能遇到的工作,需求方主要包括产品运营部门和各业务部门.基于不同公司的不同发展阶段,遇到的报表工作"层次&qu ...
- Python办公自动化:制作报表并发送到邮箱
大家好,我是辰哥(文末送书) 作为数据分析师,我们需要经常制作统计分析图表.但是报表太多的时候往往需要花费我们大部分时间去制作报表.这耽误了我们利用大量的时间去进行数据分析.但是作为数据分析师我们应该 ...
- Python 自动化教程(2) : Excel自动化:使用pandas库
系列教程: Python 自动化教程(1) 概述,第一篇 Excel自动化 Python 自动化教程(2) : Excel自动化:使用pandas库 Python 自动化教程(3) : 自动生成PPT ...
- 如何利用Python实现工作中的自动化
如何利用Python实现工作中的自动化 "偷懒还能干完活,才是本事" 帅张发了一篇<工作要学会偷懒>,深感赞同. 有些事情既然定期都要处理,就没有更好的处理方式?能自动 ...
- 推荐一位玩自动化的 Python 爱好者
今天给大家推荐一位 Python 类的公众号「AirPython」,作者:星安果,果哥有 7 年的编程学习经验,热爱 Python 爬虫.Web.数据分析及自动化,平时喜欢分享一些实用.有趣的 Pyt ...
- Docker selenium自动化 - 使用python操作docker,python运行、启用、停用和查询容器实例演示
Docker selenium 自动化 - 使用 Python 操作 docker 运行.启用.停用和查询容器实例演示 第一章:Python 操作 docker ① python 运行 docker ...
最新文章
- Android跨进程通信二——AIDL
- Py之ipython:Python库之ipython的简介、安装、使用方法详细攻略
- 顶会VLDB‘22论文解读:CAE-ENSEMBLE算法
- java并发编程之线程的生命周期详解
- redis zset转set 反序列化失败_7000字 Redis 超详细总结、笔记!建议收藏
- uniapp image图片切换动效_谷歌设计团队发布了一款动效神器,让 UI 和动效无缝打通...
- 教大家抖音怎么开通直播功能
- 【新番尝鲜】玛利亚狂热--百合VS伪娘之战
- 二重指针、二维数组及二者如何进行赋值
- 左耳朵耗子的技术书籍建议
- 中标麒麟Linux能运行wine吗,中标麒麟V6下wine完美运行通达信
- 年味变淡是从我们变得随便开始的
- Python肺CT图像窗位窗宽调整
- JAVA学习homework的Car、Bus、motoVehicle
- Cesium 添加天地图三维地形
- Android中检测应用是否安装
- 《Java并发编程的艺术》——Java并发的前置知识(笔记)
- Python+OpenCV 实现Farneback光流法从RGB图像序列中提取光流
- 微习惯瘦身,一天一个俯卧撑就够了吗?
- GET与POST请求区别和编写GET、POST接口