python drop函数_用python帮财务小姐姐自动生成财务报表

↑↑↑关注后"星标"简说Python

人人都可以简单入门Python、爬虫、数据分析  简说Python严选 

来源:python数据分析之禅   作者:小dull鸟

One old watch, like brief python 大家好,我是老表~ 今天和大家分享的内容是 关于Python自动化操作excel一些方法和技巧,学习了 记得点赞、留言、转发,三连哦~

431c126ac77d17c7ed93c8b60d76e7f4.png

公司财务小姐姐每月需要根据如下报表统计出本月、上月、去年同期的销售额、客流量、客单价数据:

ba3030d8d38f549c97e1a2a4c10e909f.png

每个月都要手动计算,非常耗费时间,本着乐于助人的原则,我用python写了个小程序,能够实现自动生成财务报表,现把具体过程分享给大家:

一、pandas导入数据源

import pandas as pd
data=pd.read_csv('数据模板.csv',encoding='gbk',parse_dates=["成交时间"])
data

c3cb6c0c5a01431d7996118fe051b197.png

parse_dates可以将成交时间列转换成时间格式

二、pandas计算相关指标

先给大家介绍一下指标的计算方式:

销售额=单价*销量客流量=订单id去重后的次数客单价=销售额/客流量

1.计算上月数据

通过pandas比较功能,取出本月数据,&为比较运算符,相当于“与”

from datetime import datetime
current_m=data[(data["成交时间"]>=datetime(2020,2,1))&(data["成交时间"]<=datetime(2020,2,28))]
current_m

32c2a4645a5dc22d82445596b8dd6722.png

销售额计算

current_s=(current_m['销量']*current_m['单价']).sum()
current_s
sum是pandas中的求和函数,用于返回用户所请求轴的值之和。

客流量计算

current_t=current_m['订单ID'].drop_duplicates().count()
current_t
drop_duplicatesop:去重函数count:计数函数

客单价计算

curent_s_t=round(current_s/current_t,2)
curent_s_t

2.计算上月数据

计算方式是一样的,只不过把日期范围调整一下,代码如下:

from datetime import datetime
last_m=data[(data["成交时间"]>=datetime(2020,1,1))&(data["成交时间"]<=datetime(2020,1,31))]
last_s=(last_m['销量']*last_m['单价']).sum()
last_t=last_m['订单ID'].drop_duplicates().count()
last_s_t=round(last_s/last_t,2)

3.计算去年同期数据

from datetime import datetime
same_m=data[(data["成交时间"]>=datetime(2019,2,1))&(data["成交时间"]<=datetime(2019,2,28))]
same_s=(same_m['销量']*same_m['单价']).sum()
same_t=same_m['订单ID'].drop_duplicates().count()
same_s_t=round(same_s/same_t,2)

4.将上述数据转成DataFrame表格型数据结构

result=pd.DataFrame([[current_s,last_s,same_s],[current_t,last_t,same_t],[curent_s_t,last_s_t,same_s_t]],columns=["本月","上月同期","去年同期"],index=["销售额","客流量","客单价"])
result

654e05f7263c4c18976116d8c66cd5c9.png

5.增加同比和环比数据

result["同比"]=result["本月"]/result["上月同期"]-1
result["环比"]=result["本月"]/result["去年同期"]-1
result

eec6725ecae917793506d903e5e8bd94.png

自动化报表的模板基本已经做好了,等下月需要时,只需改一下时间,运行程序即可,省去了大量的人工计算时间

三、可视化展示

用plotly画出柱状图

import plotly.graph_objs as go
columns=["本月","上月同期","去年同期"]
fig = go.Figure(data=[
    go.Bar(name='销售额',x=columns,y=[current_s,last_s,same_s]),
    go.Bar(name='客流量',x=columns,y=[current_t,last_t,same_t]),
    go.Bar(name='客单价',x=columns,y=[curent_s_t,last_s_t,same_s_t]),])
fig.update_layout(barmode='group')
fig.show()

6d7c575c434f7a3c379a72ea731e7388.png

点击右上角标签,可以展示不同的参数图形

简说Python

c652aee8cb36d79c9ac7957377f2f901.png

长按扫码关注,一起学Python

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值