Python自动生成数据日报

import pandas as pd
import numpy as np
import collections as Counter
from datetime import datetime
df=pd.read_excel("D:\曾海峰\python零一课程\用Python自动生成数据日报!\销售数据明细.xlsx",
parse_dates=['销售日期'])

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['货号'].unique()#本月截止12月25日货品数
list_huopin1=len(huopin1.tolist())
print("本月截止到12月25日收入为{:.2f}元,单量为{}个,货品数为{}个".format(shouru1,danliang1,list_huopin1))"""

"""计算上月相关指标

同时选取上月同期的数据,数据范围11月1日到11月25日的数据,分别计算上月同期的收入、上月同期的单量、上月同期的货品数。"""

last_month=df[(df['销售日期']>=datetime(2021,11,1))&(df["销售日期"]<=datetime(2021, 11,25))]

"""shouru2=(last_month['销量']*last_month['销售额']).sum()#本月截止12月25日收入
danliang2=last_month['销量'].sum()#本月截止11月25日单量
huopin2=last_month['货号'].unique()#本月截止11月25日货品数
list_huopin2=len(huopin2.tolist())
print("本月截止到11月25日收入为{:.2f}元,单量为{}个,货品数为{}个".format(shouru2,danliang2,list_huopin2))"""

"""利用函数进行封装

以上我们可以发现规律,计算本月的相关指标数据与计算上月同期的指标数据计算逻辑是一样的,除了数据选取的日期不一样,我们可以自定义一个函数,用于计算相关的数据指标,简化数据计算的流程。"""
def get_month_date(df):
shouru=(df['销量']*df['销售额']).sum()
danliang=df['销量'].sum()
huopin=df['货号'].nunique()
#list_huopin=len(huopin.tolist())
#return(shouru,danliang,list_huopin)
return(shouru,danliang,huopin)

shouru1,danliang1,

the_month=df[(df['销售日期']>=datetime(2021,12,1))&(df["销售日期"]<=datetime(2021, 12,25))]
shouru1,danliang1,huopin1=get_month_date(the_month)#计算本月数据指标
print("本月截止12月25日收入为{:.2f}元,单量为{}个,货品数为{}个".format(shouru1,danliang1,huopin1))
last_month=df[(df['销售日期']>=datetime(2021,11,1))&(df["销售日期"]<=datetime(2021, 11,25))]

shouru2,danliang2,huopin2=get_month_date(last_month)#计算本月数据指标
print("上月截止11月25日收入为{:.2f}元,单量为{}个,货品数为{}个".format(shouru2,danliang2,list_huopin2))

"""计算环比 构建一个DataFrame,填入具体的计算指标数值,计算环比数据。"""

ribao=pd.DataFrame([[shouru1,shouru2],
[danliang1,danliang2],
[huopin1,huopin2]],
columns=["本月","上月"],
index=['收入','单量','货品数'])

ribao['环比']=ribao['本月']/ribao['上月']-1
ribao['环比']=ribao['环比'].apply(lambda x:format(x,'.2%'))#数据小数转百分数,%2表示保留小数点后2位
ribao
""可以将具体的数据日报导出到本地。""

ribao.to_excel(r'C:\Users\liangfeng\Desktop\数据日报.xlsx',index=False)

计算每月的销售额、销量数据情况

计算每月的销售额、销售数据情况,使用groupby函数,同时aggregate函数自定义数值的计算方式,数据结果如下。

df['销售月份']=df['销售日期'].astype(str).str[0:7].str.replace('-','')
df_group=df.groupby("销售月份").aggregate({'销售额':'sum','销量':'sum'})
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')

参考连接https://mp.weixin.qq.com/s/JMF7cGulg6IVViXp_V-jww

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,080评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,422评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,630评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,554评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,662评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,856评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,014评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,752评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,212评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,541评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,687评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,347评论 4 331
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,973评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,777评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,006评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,406评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,576评论 2 349

推荐阅读更多精彩内容