当前位置:首页>python>Python/财务自动化之日记账自动生成

Python/财务自动化之日记账自动生成

  • 2026-10-11 14:27:08
Python/财务自动化之日记账自动生成
之前写了一篇《财务预实分析表自动化生成》,里面包含了 数据下载 和 表格处理 两个部分。这次的日记账自动生成其实也是一样的。
通常来说,如果是自己开发的日记账自动化小工具,那编码过程大概分三个模块:
1、登录系统自动下载账户流水;
2、账户流水自动转换日记账;
3、登录资金系统将日记账数据自动录入。
其中1的登录系统下载数据部分,在上次预实分析表篇里有写过,上次是登录的预算系统和费控系统下载数据,这次是登录资金系统下载数据,对于编码来说,结构基本是大差不差的,所以这部分可以参考上期代码。
而3中登录系统录入数据的部分,我们可以想一想,登录系统-和上篇的登录一样,点击页面-上篇里有(点击输入框、点击查询按钮),输入文字-上篇里有(输入账号密码、输入公司名称)。唯一缺少的一个步骤是,如何将文件中的数据,按想要的顺序循环录入系统。
这一步因为涉及到循环,其实是要考虑代码结构设计的,讲起来比较复杂,对于新手来说可能不容易理解,所以本篇暂不涉及。悟性比较强的朋友,可以尝试自己和AI聊聊,看能不能把这一步聊出来。
本篇主要是写第2步,账户流水自动转换日记账。这一步的重点,是将流水文件中需要的信息,通过设定好的“字典”,自动对应预算科目。
首先,打开文件,这里可以用相对路径和绝对路径,对于新手来说,用绝对路径是比较方便的。
file_path = r"C:\Users\admin\Desktop\交易流水202603.xlsx"
这里的 r 后面的部分,就是文件的路径,在文件的属性里就可以复制。
然后筛选需要的列。不同的账户流水,可能存有不同的信息。有的二十几列,有的可能就十几列,但实际我们做日记账需要的,可能就是交易日期、对方户名、收支方向、摘要、金额等等几列,可以根据需要在代码中修改。
journal.columns = ['日期', '类别', '对方名称', '收支', '金额', '备注']
然后根据需要,可以调整日期、金额的格式。
# 1. 日期只保留年月日,去掉时间journal['日期'] = pd.to_datetime(journal['日期']).dt.date# 2. 金额格式化为两位小数journal['金额'] = journal['金额'].apply(lambda x: f"{x:.2f}")
这里我把流水中的时分秒去掉,只留下了交易的年月日,然后金额需要保留两位小数(因为有的金额可能是如2元,我喜欢统一成2.00元)。
然后最重要的一步,就是预算科目的匹配。
budget_dict = {    '餐饮美食': '业务招待费',    '文化休闲': '业务招待费',    '生活服务': '业务招待费',    '交通出行': '市内交通费',    '日用百货': '办公费',    '数码电器': '低值易耗品',    '充值缴费': '通讯费',    '保险': '管理费用',    '退款': '其他应收款',    '投资理财': '利息收入'}
这里我是通过流水中的交易分类来匹配的,如果你的账户流水中没有这个信息,也可以通过摘要中的关键字段来匹配。
比如,我的分类里包含“餐饮美食”,我想要的预算分类就是业务招待费。所以“ :”前写的“交通出行”,“ :”后写的“市内交通费”。
这里就可以改成,如果“摘要”里包含比如“打车费”,预算科目就对应“市内交通费”或者“管理费用”,根据需要的信息修改即可。
这段代码的意思就是,根据一个设定好的关键词,去查“字典”,找到对应的预算科目。有新的关键词在括号里继续往下加即可。
最后将预算科目列加到最后,调整顺序,保存新文件就可以了。
是不是很简单。
以下是完整代码,可自行取用。
import pandas as pdimport os# 绝对路径,方便小白修改file_path = r"C:\Users\admin\Desktop\交易流水202603.xlsx"# 读取数据df = pd.read_excel(file_path)# 选择需要的列journal = df[['交易时间', '交易分类', '交易对方', '收/支', '金额', '备注']].copy()journal.columns = ['日期', '类别', '对方名称', '收支', '金额', '备注']# 1. 日期只保留年月日,去掉时间journal['日期'] = pd.to_datetime(journal['日期']).dt.date# 2. 金额格式化为两位小数journal['金额'] = journal['金额'].apply(lambda x: f"{x:.2f}")# 预算类别字典(交易分类 → 预算类别)budget_dict = {    '餐饮美食': '业务招待费',    '文化休闲': '业务招待费',    '生活服务': '业务招待费',    '交通出行': '市内交通费',    '日用百货': '办公费',    '数码电器': '低值易耗品',    '充值缴费': '通讯费',    '保险': '管理费用',    '退款': '其他应收款',    '投资理财': '利息收入'}# 添加预算类别列journal['预算类别'] = journal['类别'].apply(lambda x: budget_dict.get(x, '其他'))# 3. 调整列顺序:把备注放最后journal = journal[['日期', '类别', '对方名称', '收支', '金额', '预算类别', '备注']]# 保存为新的Excel文件(绝对路径)output_path = r"C:\Users\admin\Desktop\资金日记账.xlsx"journal.to_excel(output_path, index=False)print("转换完成!文件已保存到:" + output_path)print("共转换 " + str(len(journal)) + " 条交易记录")

最新文章

随机文章