会计如何用Python快速做账?两招搞定90%重复工作

B站影视 电影资讯 2025-09-02 15:55 2

摘要:作为会计,你是不是也常被这些问题折磨:月底对着几百条银行流水逐行录入,眼睛看花手抽筋;写分录时反复核对借贷方向,生怕记错一个科目;对账时翻遍Excel找差异,半天都理不清头绪?

作为会计,你是不是也常被这些问题折磨:月底对着几百条银行流水逐行录入,眼睛看花手抽筋;写分录时反复核对借贷方向,生怕记错一个科目;对账时翻遍Excel找差异,半天都理不清头绪?

其实,现在早就不是“算盘拨得快就是好会计”的时代了。身边不少同行靠Python把做账效率提了3倍,每天准时下班不说,还能腾出时间考证书、搞副业。今天就把这套亲测有效的“偷懒技巧”分享给你,哪怕是零基础,跟着案例一步步操作,也能立刻上手。

痛点直击:每月银行流水、发票明细少则几百条,多则上千条,手动录入不仅要花3-4小时,还容易输错金额、填错日期,光核对就得再耗1小时。

解决方案:用Python的pandas库“一键搬运”数据,自动清洗格式,3分钟完成原本半天的工作。

手把手操作案例:处理银行流水

假设你从网银导出的流水长这样(混乱版):

交易时间 交易描述 金额

2023/11/02 9:30 转账-付A公司货款 ¥5,000.00

11-03 14:20 收款-B公司订单款 12000元

2023年11月04日 取现 2000

这种格式混乱的数据,会计软件根本认不出,必须手动改。但用Python,3步就能标准化:

步骤1:安装工具(5分钟搞定)

打开电脑自带的“命令提示符”,复制粘贴这行代码,按回车:

pip install pandas openpyxl

(如果弹出“pip不是内部命令”,百度搜“Python环境变量配置”,跟着教程3分钟就能解决,新手也能搞定)

步骤2:导入并读取数据

新建一个记事本,复制下面的代码,把文件名改成你的流水文件名(比如“11月银行流水.xlsx”),然后把记事本后缀改成“.py”(比如“处理流水.py”):

import pandas as pd # 调用数据处理工具

# 读取Excel文件,注意文件要和代码放在同一个文件夹里

df = pd.read_excel('11月银行流水.xlsx')

# 显示前5行数据,看看有没有读对

print(df.head)

双击运行这个文件,屏幕上会显示流水的前5行,说明数据导入成功了。

步骤3:自动清洗格式(核心操作

在刚才的代码后面继续加内容,实现自动整理:

# 统一日期格式,不管原来是什么样子,都改成“2023-11-02”这种标准格式

df['交易时间'] = pd.to_datetime(df['交易时间'], errors='coerce').dt.date

# 清理金额:去掉“¥”“元”“,”这些符号,转成数字方便计算

df['金额'] = df['金额'].astype(str) # 先转成文本

df['金额'] = df['金额'].str.replace(r'[¥,元]', '', regex=True) # 去掉特殊符号

df['金额'] = df['金额'].astype(float) # 转成数字

# 给流水加“收支方向”:比如“付”“取现”是支出,“收”是收入

df['方向'] = df['交易描述'].apply(lambda x: '支出' if '付' in x or '取现' in x else '收入')

# 保存成干净的新文件

df.to_excel('11月清洗后流水.xlsx', index=False)

print('搞定!清洗好的文件已经保存啦~')

再次运行文件,文件夹里会多出一个“11月清洗后流水.xlsx”,打开看看:日期统一、金额是纯数字、还自动标好了收支方向,直接就能导入会计软件,全程不到2分钟!

效果对比:

手动处理1000条流水:3小时+(含核对)

Python处理:5分钟(含代码运行)

错误率:手动1%-3% vs Python 0(只要规则没错)

痛点直击:写分录时要对着摘要想科目,比如“办公费”对应“管理费用”,“货款”对应“应收账款”,几百条记录下来脑壳疼;对账时企业账和银行流水对不上,逐行比对能把人逼疯。

解决方案:用Python预设规则自动生成分录,一键找出对账差异,连实习生都能做对。

手把手操作案例1:自动生成分录

还是用刚才清洗好的银行流水,让Python自动写出分录:

步骤1:设定分录规则(自己可以改)

在代码里告诉Python:看到什么关键词,就用什么科目。比如:

# 定义分录规则:关键词对应借贷方科目

def get_entry(描述, 金额, 方向):

if '货款' in 描述 and 方向 == '收入':

return '应收账款', '主营业务收入', 金额 # 借:应收账款,贷:主营业务收入

elif '货款' in 描述 and 方向 == '支出':

return '应付账款', '银行存款', 金额 # 借:应付账款,贷:银行存款

elif '办公费' in 描述:

return '管理费用-办公费', '银行存款', 金额 # 借:办公费,贷:银行存款

elif '取现' in 描述:

return '库存现金', '银行存款', 金额 # 借:现金,贷:银行存款

else:

return '其他应收款', '银行存款', 金额 # 其他情况默认科目

# 应用规则,生成分录

df[['借方科目', '贷方科目', '分录金额']] = df.apply(

lambda row: get_entry(row['交易描述'], row['金额'], row['方向']),

axis=1, result_type='expand'

)

# 保存成分录表

df[['交易时间', '交易描述', '借方科目', '贷方科目', '分录金额']].to_excel('自动分录.xlsx', index=False)

print('分录生成完毕!')

步骤2:检查结果

打开“自动分录.xlsx”,每一行流水都对应好了借贷方科目,比如“付A公司货款”自动对应“应付账款”借方和“银行存款”贷方,根本不用动脑想。如果有特殊业务,只要在规则里加一句就行,比如“差旅费”对应“管理费用-差旅费”,灵活得很。

月底要核对“银行存款”科目,企业账和银行流水总有对不上的,用Python一秒找出差异:

# 读取企业账数据(假设叫“企业银行账.xlsx”,有“日期”“金额”“摘要”列)

company_df = pd.read_excel('企业银行账.xlsx')

# 读取银行流水(就是之前清洗好的)

bank_df = pd.read_excel('11月清洗后流水.xlsx')

# 合并两表,找相同的记录(日期、金额都一样的)

matched = pd.merge(

company_df, bank_df,

on=['交易时间', '金额'],

how='inner',

suffixes=['_企业', '_银行']

)

# 找企业有但银行没有的(企业已记,银行未记)

company_only = company_df[~company_df.set_index(['交易时间', '金额']).index.isin(

matched.set_index(['交易时间', '金额']).index

)]

# 找银行有但企业没有的(银行已记,企业未记)

bank_only = bank_df[~bank_df.set_index(['交易时间', '金额']).index.isin(

)]

# 保存结果

with pd.ExcelWriter('对账结果.xlsx') as writer:

matched.to_excel(writer, sheet_name='已达账项', index=False)

company_only.to_excel(writer, sheet_name='企业已记银行未记', index=False)

bank_only.to_excel(writer, sheet_name='银行已记企业未记', index=False)

print('对账完成!未达账项都标出来了~')

打开“对账结果.xlsx”,三张表清清楚楚:哪些对上了,哪些是企业漏记的,哪些是银行还没到的,一目了然。以前要2小时对账,现在30秒出结果,还不会漏项。

很多人一听到“编程”就怕,其实会计用Python根本不用学复杂语法,就像上面的代码,复制过去改改文件名、换换关键词,就能直接用。我整理了一套“会计专用Python模板”,包含流水处理、分录生成、报表自动汇总等10个常用功能,关注后私信“会计模板”就能领,直接套用更方便。

现在的会计工作,早就不是“做得快”而是“做得巧”。把重复工作交给Python,自己专注于财务分析、预算规划这些更有价值的事,既能少加班,又能在老板面前体现价值,何乐而不为?

试试今天这两招,下次同事还在埋头录数据时,你已经喝完咖啡准备下班了。觉得有用的话,别忘了点赞收藏,转发给正在加班的会计同行~​​​

来源:绿叶菜

相关推荐