1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > python如何做一个财务报表_用python帮财务小姐姐自动生成财务报表

python如何做一个财务报表_用python帮财务小姐姐自动生成财务报表

时间:2020-04-12 14:47:47

相关推荐

python如何做一个财务报表_用python帮财务小姐姐自动生成财务报表

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

来源:python数据分析之禅作者:小dull鸟Oneoldwatch,likebrief python大家好,我是老表~今天和大家分享的内容是关于Python自动化操作excel一些方法和技巧,学习了记得点赞、留言、转发,三连哦~

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

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

一、pandas导入数据源

importpandasaspd

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

data

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

二、pandas计算相关指标

先给大家介绍一下指标的计算方式:销售额=单价*销量客流量=订单id去重后的次数客单价=销售额/客流量

1.计算上月数据

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

fromdatetimeimportdatetime

current_m=data[(data['成交时间']>=datetime(,2,1))&(data['成交时间']<=datetime(,2,28))]

current_m

销售额计算current_s=(current_m['销量']*current_m['单价']).sum()

current_ssum是pandas中的求和函数,用于返回用户所请求轴的值之和。

客流量计算current_t=current_m['订单ID'].drop_duplicates().count()

current_tdrop_duplicatesop:去重函数count:计数函数

客单价计算curent_s_t=round(current_s/current_t,2)

curent_s_t

2.计算上月数据

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

fromdatetimeimportdatetime

last_m=data[(data['成交时间']>=datetime(,1,1))&(data['成交时间']<=datetime(,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.计算去年同期数据fromdatetimeimportdatetime

same_m=data[(data['成交时间']>=datetime(,2,1))&(data['成交时间']<=datetime(,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

5.增加同比和环比数据result['同比']=result['本月']/result['上月同期']-1

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

result

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

三、可视化展示

用plotly画出柱状图

importplotly.graph_objsasgo

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()

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。