前言:
而今大家对“python的财务应用”可能比较着重,我们都需要分析一些“python的财务应用”的相关资讯。那么小编也在网上收集了一些关于“python的财务应用””的相关内容,希望你们能喜欢,大家快快来学习一下吧!科目余额表对会计来说就像是老朋友,几乎每周都要见一次。
上周跟几米聊完之后,她说如果能早点接触到Python就不用每天都加班了,Python对财务人太友好了,除了能编会计凭证之外还能模拟ERP将凭证上的数据放到财务报表里。几米说她才学一周就把Python的基础语法过一遍了,现在已经进入到实战阶段!
其实Python跟财务结合的场景还有很多很多,今天就来跟大家介绍会计都爱用的Python自动计算科目余额表的功能!
我们知道会计凭证“过账”之后,在ERP系统就可以查询到科目余额表了。
那么科目余额表是怎么来的呢?
一般来讲,科目余额表分为两组数据列,分别为交易币和本位币的期初余额、本期借方、本期贷方、期末余额。科目余额表的行展示的是科目+交易币种的组合。
对于金额列的取数逻辑:
期初金额一般是从上期结转而来。一月份的期初数据是从上年结转而来,在我们今天的案例中,将年初数据作为一笔特殊的凭证存储在201900会计期间。本期借方金额和本期贷方金额其实就是凭证明细表按科目+币种+账套+会计期间汇总而来期末金额=期初金额+借方金额-贷方金额
一般的科目余额表长这样:
掌握了这些规律后,我们用Python写一段程序模拟ERP中的“过账”(将凭证过到科目余额表)操作!
在开始之前,我们先观察科目余额表字段,分析数据处理需求,输入代码:
#读数据库以观察数据处理要求sql_6=r''select*fromE03_TrialBalance"df04=pd.read_sql(sql_6,engine)df04.head()
接下来进入到用Python计算科目余额表的阶段~
1
汇总期初数
#传参:过账期间:201901Period='201901'#计算期初if Period[-2:]=='01':#如果是1月份,取0期间作为期初数# a.按照账套币编码,科目代码,科目名称,币种 汇总金额df04_1 = df00[df00['会计期间']==Period[0:4]+'00'].groupby(['账套编码','科目代码','科目名称','交易币种'],as_index=False)['交易币借方','交易币贷方','本位币借方','本位币贷方'].sum()# b .计算期初交易币df04_1['期初交易币'] = df04_1['交易币借方'].fillna(0) - df04_1['交易币贷方'].fillna(0)#fillna(value):检测数据表中缺失值并替换成插入的value。df04_1['期初本位币'] = df04_1['本位币借方'].fillna(0) - df04_1['本位币贷方'].fillna(0)# c. 把不要的信息删除df04_1 = df04_1.drop(['交易币借方','交易币贷方','本位币借方','本位币贷方'],axis=1)else:#如果非1月份,取上期期末数作为期初数df04_1['期初交易币'] = df04.loc[(df04['会计期间']==Period[0:4]+str(int(Period[-2:])-1).zfill(2)),['期末交易币']]df04_1['期初本位币'] = df04.loc[(df04['会计期间']==Period[0:4]+str(int(Period[-2:])-1).zfill(2)),['期末本位币']]#zfill() 方法返回指定长度的字符串,原字符串右对齐,前面填充0。df04_1.head()
2
汇总当月数
# 按照 账套编码,科目代码,科目名称,币种汇总金额并重命名列df04_2 = df00[df00['会计期间']==Period].groupby(['账套编码','科目代码','科目名称','交易币种'],as_index=False)['交易币借方','交易币贷方','本位币借方','本位币贷方'].sum().rename(columns={'交易币借方':'本期借方交易币','交易币贷方':'本期贷方交易币','本位币借方':'本期借方本位币','本位币贷方':'本期贷方本位币'})#rename()函数:重定义字段名df04_2.head()
3
计算期末值
# 将期初数和本月数拼成一张表并计算期末值df04 = pd.merge(df04_1,df04_2,on=['科目代码','科目名称','账套编码','交易币种'],how='outer')df04.insert(1,'会计期间',Period)df04['期末交易币'] = df04['期初交易币'].fillna(0)+df04['本期借方交易币'].fillna(0)-df04['本期贷方交易币'].fillna(0)df04['期末本位币'] = df04['期初本位币'].fillna(0)+df04['本期借方本位币'].fillna(0)-df04['本期贷方本位币'].fillna(0)df04.head()
4
将数据写入数据表:E03_TrialBalance
#a.先按账簿、期间删除表中数据sql_5 = "DELETE FROM E03_TrialBalance WHERE 会计期间='201901'"engine.execute(sql_5)# b. 用to_sql()将df04 写入数据库df04.to_sql(name='E03_TrialBalance',con=engine,if_exists='append',index=False)# c.再重新读数据库以验证是否插入成功sql_6=r"select * from E03_TrialBalance"df04=pd.read_sql(sql_6,engine)df04.head()
再打开数据库看一下,数据表里面的数据也生成了呢~到这一步,科目余额表生成完毕,从凭证到过账的步骤,借助代码就可以完成了!
能让财务解放双手“万能”的Python你还不赶紧来了解一下吗?
END
©图片版权归财码Python所有,如对版权有异议,请联系后台议定处理。
本文由财码Python整理发布,如需转载请务必注明以上信息。
标签: #python的财务应用