京公网安备 11010802034615号
经营许可证编号:京B2-20210330
CDA数据分析师 出品
作者:曹鑫
我知道,一说到数字经济,数字化转型,数字化人才,你第一感觉就是:跟我有半毛钱关系。诶,不要着急!
至少 Excel 你天天在用吧?只不过你可能用的最多的就是复制粘贴记录一下数据。你不要怀疑,这高低、左右,都算是数字化技能!因为数字化技能的核心就是数据能力,而且数据能力贯穿着公司业务全流程的每个环节,这也是为什么说,数字经济时代的新生产资料是数据!看看这张数据能力图,分成四个层面:需求层、数据层、分析层、输出层;第一层是需求层,是目标确定的过程,对整个业务进行拆解,为数据工作指明方向;第二层是数据层,包含数据获取、数据清洗、数据整;第三层是分析层,包含描述性统计制图、业务根因分析,这里就涉及到专业的算法;第四层是输出层,面向管理层、决策层、执行层,给出不同的数据报告、业务仪表盘、落地模型等。
今天遇到一个任务是「财务对账」。
对账,可以说是财务最常做的一个工作,也是基础工作之一。就算你们公司的系统已经非常完整了,你还是会遇到两个表要核对差异在哪里的情况。你会怎么做?
当数据量不大的时候,我们最简单的做法,也是最符合第一直觉的做法,把两张表放到一起,一左一右,左边有个268,右边有个268,这就对上了;左边有个20.1,右边没找到20.1,这就是多记了,但是右边有个21,所以也有可能是错记了;左边有个100,右边也有个100,左边还有个100,右边没有100了,那这里可能是多记了。剩下右边还有个8,那这就是左边漏记了,这样就把不同情况都分析出来了。
但如果数据量大了,几百上千行,甚至几万行,这个方法就有点累了,比如我们现在有的两张数据表,一份公司银行存款明细账和一份银行流水,我们需要将公司银行存款明细中的借方与银行流水的收款金额进行核对。别说几百上千行了,光看这个100多行,我就觉得看着累。
如果用 Python 来做,效率就会大大提升。我们先看看Python实现的逻辑,还是之前的例子:我们要看数据有没有重复,就是统计每个数据在两个表分别出现的次数,然后两个表中的个数相减。
知道了逻辑,我们就可以来操作了。先看看效果,就是这30多行代码,作为新人,你别怕,我们先看看有多爽!
import pandas as pd
# 读取公司明细账
df_gs = pd.read_excel('./对账数据/公司银行存款明细账.xlsx',header=1)
# 读取银行流水
df_yh = pd.read_excel('./对账数据/银行流水.xlsx',header=1)
df_gs_jie = df_gs[['凭证号','借方']] df_gs_jie = df_gs_jie.rename(columns={'借方':'金额'})
df_yh_shou = df_yh[['收款金额','对方户名']] df_yh_shou = df_yh_shou.rename(columns={'收款金额':'金额'})
# 将两张表的借方-收款拼接
mergedStuff_jie_shou= df_gs_jie.append(df_yh_shou)
mergedStuff_jie_shou = mergedStuff_jie_shou[mergedStuff_jie_shou['金额'] != 0]
df_count = mergedStuff_jie_shou.groupby(by='金额').count()
# 判断金额出现的次数
df_count['重复次数'] = df_count['凭证号'] - df_count['对方户名']
# 重复次数不为0,就是没有对上
df_result = df_count[df_count['重复次数'] != 0].copy()
# 判断错误问题
df_result['错误原因'] = df_result.apply(lambda x: '漏记' if x['重复次数']< 0 else ('重复记录/多记' if x['重复次数'] > 1 else '多记/错记'), axis=1) print('借方-收款出现的错误')
df_result[['错误原因']]
# 列出两张表中具体的行 # 公司银行存款明细账中的多记/错记 df_gs[df_gs['借方'] == 1.00]
# 银行流水中的漏记 df_yh[(df_yh['收款金额'] == 637146.52) |
(df_yh['收款金额'] == 27023289.88) ]
读取两张 Excel 表的数据
import pandas as pd # 读取公司明细账 df_gs = pd.read_excel('./对账数据/公司银行存款明细账.xlsx',header=1)
df_gs.head()
# 读取银行流水 df_yh = pd.read_excel('./对账数据/银行流水.xlsx',header=1)
df_yh.head()
数据清洗:修改列名
df_gs_jie = df_gs[['凭证号','借方']] df_gs_jie = df_gs_jie.rename(columns={'借方':'金额'})
df_gs_jie.head()
df_yh_shou = df_yh[['收款金额','对方户名']] df_yh_shou = df_yh_shou.rename(columns={'收款金额':'金额'})
df_yh_shou.head()
拼接两张表
# 将两张表的借方-收款拼接 mergedStuff_jie_shou= df_gs_jie.append(df_yh_shou)
mergedStuff_jie_shou = mergedStuff_jie_shou[mergedStuff_jie_shou['金额'] != 0] # 剔除金额为 0 的行 mergedStuff_jie_shou
根据金额进行统计
df_count = mergedStuff_jie_shou.groupby(by='金额').count()
df_count
# 判断金额出现的次数 df_count['重复次数'] = df_count['凭证号'] - df_count['对方户名']
df_count
# 重复次数不为0,就是没有对上 df_result = df_count[df_count['重复次数'] != 0].copy()
df_result
# 判断错误问题
df_result['错误原因'] = df_result.apply(lambda x: '漏记' if x['重复次数']< 0 else ('重复记录/多记' if x['重复次数'] > 1 else '多记/错记'), axis=1) print('借方-收款出现的错误')
df_result[['错误原因']]
# 多记/错记 df_gs[df_gs['借方'] == 1.00]
# 漏记 df_yh[(df_yh['收款金额'] == 637146.52) |
(df_yh['收款金额'] == 27023289.88) ]
未来,你只要修改好需要读取的表,确定需要比对的列,然后一键运行,结果一瞬间就出来了,而且你之后每个月,每周,甚至每天要比对的时候,你只需要确定好你要比对的表,比对的数据列,就可以快速得到结果,代码复用效率极高。你还可以进一步查看各自表中具体行的数据,方便你具体判断。
CDA学员免费下载查看报告全文:2026全球数智化人才指数报告【CDA数据科学研究院】.pdf
数据分析咨询请扫描二维码
若不方便扫码,搜微信号:CDAshujufenxi
在Excel数据分析中,数据透视表是汇总、整理海量数据的高效工具,而公式则是实现数据二次计算、逻辑判断的核心功能。实际操作中 ...
2026-04-30Excel透视图是数据分析中不可或缺的工具,它能将透视表中的数据快速可视化,帮助我们直观捕捉数据规律、呈现分析结果。但在实际 ...
2026-04-30 很多数据分析师能熟练地计算指标、搭建标签体系,但当被问到“画像到底在解决什么问题”“画像和标签是什么关系”“画像如何 ...
2026-04-30在中介效应分析中,人口统计学变量(如年龄、性别、学历、收入、职业等)是常见的控制变量或调节变量,其处理方式直接影响分析结 ...
2026-04-29在SQL数据库实操中,日期数据的存储与显示是高频需求,而“数字日期”(如20240520、20241231、45321)是很多开发者、数据分析师 ...
2026-04-29 很多分析师在设计标签时思路清晰,但真到落地环节却面临“数据在手,不知如何转化为可用标签”的困境:或因加工方式选择不当 ...
2026-04-29在手游行业竞争日趋白热化的当下,“流量为王”早已升级为“留存为王”,而付费用户留存率更是衡量一款手游盈利能力、运营质量的 ...
2026-04-28在日常MySQL数据库运维与开发中,经常会遇到“同一台服务器上,两个不同数据库(以下简称“源库”“目标库”)的表数据需要保持 ...
2026-04-28 很多分析师每天和数据打交道,但当被问到“标签是什么”“标签和指标有什么区别”“标签体系如何设计”时,却常常答不上来。 ...
2026-04-28箱线图(Box Plot)作为一种经典的数据可视化工具,广泛应用于统计学、数据分析、科研实证等领域,核心价值在于直观呈现数据的集 ...
2026-04-27实证分析是社会科学、自然科学、经济管理等领域开展研究的核心范式,其核心逻辑是通过对多维度数据的收集、分析与解读,揭示变量 ...
2026-04-27 很多数据分析师精通Excel函数和数据透视表,但当被问到“数据从哪里来”“表和视图有什么区别”“数据库管理系统和SQL是什么 ...
2026-04-27在大数据技术飞速迭代、数字营销竞争日趋激烈的今天,“精准触达、高效转化、成本可控”已成为企业营销的核心诉求。传统广告投放 ...
2026-04-24在游戏行业竞争白热化的当下,用户流失已成为制约游戏生命周期、影响营收增长的核心痛点。据行业报告显示,2024年移动游戏平均次 ...
2026-04-24 很多业务负责人开会常说“我们要数据驱动”,最后却变成“看哪张报表数据多就用哪个”,往往因为缺乏一套结构性的方法去搭建 ...
2026-04-24在Power BI数据可视化分析中,切片器是连接用户与数据的核心交互工具,其核心价值在于帮助使用者快速筛选目标数据、聚焦分析重点 ...
2026-04-23以数为据,以析促优——数据分析结果指导临床技术改进的实践路径 临床技术是医疗服务的核心载体,其水平直接决定患者诊疗效果、 ...
2026-04-23很多数据分析师每天盯着GMV、DAU、转化率,但当被问到“哪些指标是所有企业都需要的”“哪些指标是因行业而异的”“北极星指标和 ...
2026-04-23在数字化时代,客户每一次点击、浏览、下单、咨询等行为,都在传递其潜在需求与决策倾向——这些按时间顺序串联的行为轨迹,构成 ...
2026-04-22数据是数据分析、建模与业务决策的核心基石,而“数据清洗”作为数据预处理的核心环节,是打通数据从“原始杂乱”到“干净可用” ...
2026-04-22