解放双手,一键运行!Python每日自动生成数据日报
off999 2025-07-23 17:38 58 浏览 0 评论
对于一个企业来说,高层看意义,中层看结论,基层看落地,数据日报、周报、月报可以监控销售个人在实际执行过程中的销售动态,而数据季度报、年报可以反映一个销售策略是否与实际的业务场景切合。
可见数据日报在我们日常工作中必不可少,本文使用案例数据,构造销售收入、销售单量等关键性指标,借助Python工具一键生成数据日报,下面一起学习吧!
示例工具:anconda3.7
本文讲解内容:办公自动化
适用范围:Python自动生成数据日报
导入数据
导入报表数据,包含销售日期,员工编号,销售员等七个字段。
import pandas as pd
from datetime import datetime
df=pd.read_excel(r'C:\Users\尚天强\Desktop\销售数据明细.xlsx',parse_dates=['销售日期'])
df.head()#数据预览
查看数据属性,其中销售日期为日期类型,销量和销售额为数值类型,其他均为文本数据类型。
df.info()#查看数据属性
计算指标
计算指标设定,设置本文需要计算的指标,指标计算如下:
- 收入=销量*销售额
- 单量=销量汇总
- 货品数=货品数去重
- 收入环比:本月收入/上月收入-1
- 单量环比:本月单量/上月单量-1
计算本月相关指标
首先选取本月的数据,本月截止到2021年12月25日的数据,分别计算本月截止12月25日收入、本月截止12月25日单量、本月截止12月25日货品数。
the_month=df[(df['销售日期']>=datetime(2021,12,1))&(df['销售日期']<=datetime(2021,12,25))]
shouru1=(the_month['销量']*the_month['销售额']).sum()#本月截止12月25日收入
danliang1=the_month['销量'].sum()#本月截止12月25日单量
huopin1=the_month['货号'].nunique()#本月截止12月25日货品数
print("本月截止12月25日收入为{:.2f}元,单量为{}个,货品数为{}个".format(shouru1,danliang1,huopin1))
本月截止12月25日收入为369242.50元,单量为728个,货品数为227个。
计算上月相关指标
同时选取上月同期的数据,数据范围11月1日到11月25日的数据,分别计算上月同期的收入、上月同期的单量、上月同期的货品数。
last_month=df[(df['销售日期']>=datetime(2021,11,1))&(df['销售日期']<=datetime(2021,11,25))]
shouru2=(last_month['销量']*last_month['销售额']).sum()#上月截止11月25日收入
danliang2=last_month['销量'].sum()#上月截止11月25日单量
huopin2=last_month['货号'].nunique()#上月截止11月25日货品数
print("上月截止11月25日收入为{:.2f}元,单量为{}个,货品数为{}个".format(shouru2,danliang2,huopin2))
上月截止11月25日收入为586483.80元,单量为777个,货品数为198个。
利用函数进行封装
以上我们可以发现规律,计算本月的相关指标数据与计算上月同期的指标数据计算逻辑是一样的,除了数据选取的日期不一样,我们可以自定义一个函数,用于计算相关的数据指标,简化数据计算的流程。
def get_month_data(df):
shouru=(df['销量']*df['销售额']).sum()
danliang=df['销量'].sum()
huopin=df['货号'].nunique()
return(shouru,danliang,huopin)
shouru1,danliang1,huopin1=get_month_data(the_month)#计算本月数据指标
shouru2,danliang2,huopin2=get_month_data(last_month)#计算上月数据指标
print("本月截止12月25日收入为{:.2f}元,单量为{}个,货品数为{}个".format(shouru1,danliang1,huopin1))
print("上月截止11月25日收入为{:.2f}元,单量为{}个,货品数为{}个".format(shouru2,danliang2,huopin2))
本月截止12月25日收入为369242.50元,单量为728个,货品数为227个,上月截止11月25日收入为586483.80元,单量为777个,货品数为198个。
计算环比
构建一个DataFrame,填入具体的计算指标数值,计算环比数据。
ribao=pd.DataFrame([[shouru1,shouru2],
[danliang1,danliang2],
[huopin1,huopin2]],
columns=['本月','上月'],index=['收入','单量','货品数'])
ribao['环比']=ribao['本月']/ribao['上月']-1
ribao['环比']=ribao['环比'].apply(lambda x:format(x,'.2%'))
ribao
可以将具体的数据日报导出到本地。
ribao.to_excel(r'C:\Users\尚天强\Desktop\数据日报.xlsx',index=False)
计算每月的销售额、销量数据情况
计算每月的销售额、销售数据情况,使用groupby函数,同时aggregate函数自定义数值的计算方式,数据结果如下。
df['销售月份']=df['销售日期'].astype(str).str[0:7].str.replace('-','')
df_group=df.groupby("销售月份").aggregate({"销售额":"sum","销量":"sum"})
df_group
数据可视化
导入pyecharts库,制作组合图,由图像可以看出,截止21年12月25日数据,21年7月销量最高、12月销量最低、21年10月收入最高、2月收入最低。
from pyecharts import options as opts
from pyecharts.charts import Bar, Line
from pyecharts.faker import Faker
#导入数据
v1 = df_group['销售额'].round(2).tolist()
v2 = df_group['销量'].tolist()
#柱形图
bar = (Bar()
.add_xaxis(df_group.index.tolist())
.add_yaxis("销售额", v1 ,category_gap="60%",gap="10%") #设置柱形间隙宽度
.extend_axis(yaxis=opts.AxisOpts(axislabel_opts=opts.LabelOpts(formatter="{value} 单"), min_=0,max_=1750))#设置次坐标轴坐标大小
.set_series_opts(label_opts=opts.LabelOpts(is_show=True))#显示数据标签
.set_global_opts(title_opts=opts.TitleOpts(title="21年每月销售额与销量情况"),
datazoom_opts=opts.DataZoomOpts(),#添加滚动条
yaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(formatter="{value} 元"),min_=0,max_=850000)))#设置主坐标轴坐标大小
#折线图
line = Line().add_xaxis(df.index.tolist()).add_yaxis("销售量", v2, yaxis_index=1, is_smooth=True)
#组合图
bar.overlap(line)
#在线显示
bar.render_notebook() ###bar.render(r'C:\Users\尚天强\Desktop\销售日报.html')
以上我们就完成了一个常规的数据日报,根据具体的数据变化情况可以跟进下一步的销售动态,这里的数据日报比较简单,在实际数据报表制作中,比这个指标复杂的多,表现在指标繁复,计算逻辑复杂,需要数据分析师不断地优化计算流程。
三年互联网数据分析经验,擅长Excel、SQL、Python、PowerBI数据处理工具,数据可视化、商业数据分析技能,统计学、机器学习知识,持续创作数据分析内容,点赞关注,不迷路。
相关推荐
- apisix动态修改路由的原理_动态路由协议rip的配置
-
ApacheAPISIX能够实现动态修改路由(DynamicRouting)的核心原理,是它将传统的静态Nginx配置彻底解耦,通过中心化配置存储(如etcd)+OpenRest...
- 使用 Docker 部署 OpenResty Manager 搭建可视化反向代理系统
-
在之前的文章中,xiaoz推荐过可视化Nginx反向代理工具NginxProxyManager,最近xiaoz还发现一款功能更加强大,界面更加漂亮的OpenRestyManager,完全可以替代...
- OpenResty 入门指南:从基础到动态路由实战
-
一、引言1.1OpenResty简介OpenResty是一款基于Nginx的高性能Web平台,通过集成Lua脚本和丰富的模块,将Nginx从静态反向代理转变为可动态编程的应用平台...
- OpenResty 的 Lua 动态能力_openresty 动态upstream
-
OpenResty的Lua动态能力是其最核心的优势,它将LuaJIT嵌入到Nginx的每一个请求处理阶段,使得开发者可以用Lua脚本动态控制请求的生命周期,而无需重新编译或rel...
- LVS和Nginx_lvs和nginx的区别
-
LVS(LinuxVirtualServer)和Nginx都是常用的负载均衡解决方案,广泛应用于大型网站和分布式系统中,以提高系统的性能、可用性和可扩展性。一、基本概念1.LVS(Linux...
- 外网连接到内网服务器需要端口映射吗,如何操作?
-
外网访问内网服务器通常需要端口映射(或内网穿透),这是跨越公网与私网边界的关键技术。操作方式取决于网络环境,以下分场景详解。一、端口映射的核心原理内网服务器位于私有IP地址段(如192.168.x.x...
- Nginx如何解决C10K问题(1万个并发连接)?
-
关注△mikechen△,十余年BAT架构经验倾囊相授!大家好,我是mikechen。Nginx是大型架构的必备中间件,下面我就全面来详解NginxC10k问题@mikechen文章来源:mikec...
- 炸场!Spring Boot 9 大内置过滤器实战手册:从坑到神
-
炸场!SpringBoot9大内置过滤器实战手册:从坑到神在Java开发圈摸爬滚打十年,见过太多团队重复造轮子——明明SpringBoot自带的过滤器就能解决的问题,偏偏要手写几十...
- WordPress和Typecho xmlrpc漏洞_wordpress主题漏洞
-
一般大家都关注WordPress,毕竟用户量巨大,而国内的Typecho作为轻量级的博客系统就关注的人并不多。Typecho有很多借鉴WordPress的,包括兼容的xmlrpc接口,而WordPre...
- Linux Shell 入门教程(六):重定向、管道与命令替换
-
在前几篇中,我们学习了函数、流程控制等Shell编程的基础内容。现在我们来探索更高级的功能:如何控制数据流向、将命令链接在一起、让命令间通信变得可能。一、输入输出重定向(>、>>...
- Nginx的location匹配规则,90%的人都没完全搞懂,一张图让你秒懂
-
刚配完nginx网站就崩了?运维和开发都头疼的location匹配规则优先级,弄错顺序直接导致500错误。核心在于nginx处理location时顺序严格:先精确匹配=,然后前缀匹配^~,接着按顺序正...
- liunx服务器查看故障命令有那些?_linux查看服务器性能命令
-
在Linux服务器上排查故障时,需要使用一系列命令来检查系统状态、日志文件、资源利用情况以及网络状况。以下是常用的故障排查命令,按照不同场景分类说明。1.系统资源相关命令1.1查看CPU使...
- 服务器被入侵的常见迹象有哪些?_服务器入侵可以被完全操纵吗
-
服务器被入侵可能会导致数据泄露、服务异常或完全失控。及时发现入侵迹象能够帮助你尽早采取措施,减少损失。以下是服务器被入侵的常见迹象以及相关的分析与处理建议。1.服务器被入侵的常见迹象1.1系统性能...
- 前端错误可观测最佳实践_前端错误提示
-
场景解析对于前端项目,生产环境的代码通常经过压缩、混淆和打包处理,当代码在运行过程中产生错误时,通常难以还原原始代码从而定位问题,对于深度混淆尤其如此,因此Mozilla自2011年开始发起并...
- 8个能让你的Kubernetes集群“瞬间崩溃”的配置错误
-
错误一:livenessProbe探针“自杀式”配置——30秒内让Pod重启20次现象:Pod状态在Running→Terminating→CrashLoopBackOff之间循环,重启间隔仅...
你 发表评论:
欢迎- 一周热门
- 最近发表
-
- apisix动态修改路由的原理_动态路由协议rip的配置
- 使用 Docker 部署 OpenResty Manager 搭建可视化反向代理系统
- OpenResty 入门指南:从基础到动态路由实战
- OpenResty 的 Lua 动态能力_openresty 动态upstream
- LVS和Nginx_lvs和nginx的区别
- 外网连接到内网服务器需要端口映射吗,如何操作?
- Nginx如何解决C10K问题(1万个并发连接)?
- 炸场!Spring Boot 9 大内置过滤器实战手册:从坑到神
- WordPress和Typecho xmlrpc漏洞_wordpress主题漏洞
- Linux Shell 入门教程(六):重定向、管道与命令替换
- 标签列表
-
- python计时 (73)
- python安装路径 (56)
- python类型转换 (93)
- python进度条 (67)
- python吧 (67)
- python的for循环 (65)
- python格式化字符串 (61)
- python静态方法 (57)
- python列表切片 (59)
- python面向对象编程 (60)
- python 代码加密 (65)
- python串口编程 (77)
- python封装 (57)
- python写入txt (66)
- python读取文件夹下所有文件 (59)
- python操作mysql数据库 (66)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python多态 (60)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)