
CDA數(shù)據(jù)分析師 出品
作者:曹鑫
我知道,一說到數(shù)字經(jīng)濟(jì),數(shù)字化轉(zhuǎn)型,數(shù)字化人才,你第一感覺就是:跟我有半毛錢關(guān)系。誒,不要著急!
至少 Excel 你天天在用吧?只不過你可能用的最多的就是復(fù)制粘貼記錄一下數(shù)據(jù)。你不要懷疑,這高低、左右,都算是數(shù)字化技能!因?yàn)閿?shù)字化技能的核心就是數(shù)據(jù)能力,而且數(shù)據(jù)能力貫穿著公司業(yè)務(wù)全流程的每個(gè)環(huán)節(jié),這也是為什么說,數(shù)字經(jīng)濟(jì)時(shí)代的新生產(chǎn)資料是數(shù)據(jù)!看看這張數(shù)據(jù)能力圖,分成四個(gè)層面:需求層、數(shù)據(jù)層、分析層、輸出層;第一層是需求層,是目標(biāo)確定的過程,對(duì)整個(gè)業(yè)務(wù)進(jìn)行拆解,為數(shù)據(jù)工作指明方向;第二層是數(shù)據(jù)層,包含數(shù)據(jù)獲取、數(shù)據(jù)清洗、數(shù)據(jù)整;第三層是分析層,包含描述性統(tǒng)計(jì)制圖、業(yè)務(wù)根因分析,這里就涉及到專業(yè)的算法;第四層是輸出層,面向管理層、決策層、執(zhí)行層,給出不同的數(shù)據(jù)報(bào)告、業(yè)務(wù)儀表盤、落地模型等。
今天遇到一個(gè)任務(wù)是「財(cái)務(wù)對(duì)賬」。
對(duì)賬,可以說是財(cái)務(wù)最常做的一個(gè)工作,也是基礎(chǔ)工作之一。就算你們公司的系統(tǒng)已經(jīng)非常完整了,你還是會(huì)遇到兩個(gè)表要核對(duì)差異在哪里的情況。你會(huì)怎么做?
當(dāng)數(shù)據(jù)量不大的時(shí)候,我們最簡(jiǎn)單的做法,也是最符合第一直覺的做法,把兩張表放到一起,一左一右,左邊有個(gè)268,右邊有個(gè)268,這就對(duì)上了;左邊有個(gè)20.1,右邊沒找到20.1,這就是多記了,但是右邊有個(gè)21,所以也有可能是錯(cuò)記了;左邊有個(gè)100,右邊也有個(gè)100,左邊還有個(gè)100,右邊沒有100了,那這里可能是多記了。剩下右邊還有個(gè)8,那這就是左邊漏記了,這樣就把不同情況都分析出來了。
但如果數(shù)據(jù)量大了,幾百上千行,甚至幾萬行,這個(gè)方法就有點(diǎn)累了,比如我們現(xiàn)在有的兩張數(shù)據(jù)表,一份公司銀行存款明細(xì)賬和一份銀行流水,我們需要將公司銀行存款明細(xì)中的借方與銀行流水的收款金額進(jìn)行核對(duì)。別說幾百上千行了,光看這個(gè)100多行,我就覺得看著累。
如果用 Python 來做,效率就會(huì)大大提升。我們先看看Python實(shí)現(xiàn)的邏輯,還是之前的例子:我們要看數(shù)據(jù)有沒有重復(fù),就是統(tǒng)計(jì)每個(gè)數(shù)據(jù)在兩個(gè)表分別出現(xiàn)的次數(shù),然后兩個(gè)表中的個(gè)數(shù)相減。
知道了邏輯,我們就可以來操作了。先看看效果,就是這30多行代碼,作為新人,你別怕,我們先看看有多爽!
import pandas as pd
# 讀取公司明細(xì)賬
df_gs = pd.read_excel('./對(duì)賬數(shù)據(jù)/公司銀行存款明細(xì)賬.xlsx',header=1)
# 讀取銀行流水
df_yh = pd.read_excel('./對(duì)賬數(shù)據(jù)/銀行流水.xlsx',header=1)
df_gs_jie = df_gs[['憑證號(hào)','借方']] df_gs_jie = df_gs_jie.rename(columns={'借方':'金額'})
df_yh_shou = df_yh[['收款金額','對(duì)方戶名']] 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()
# 判斷金額出現(xiàn)的次數(shù)
df_count['重復(fù)次數(shù)'] = df_count['憑證號(hào)'] - df_count['對(duì)方戶名']
# 重復(fù)次數(shù)不為0,就是沒有對(duì)上
df_result = df_count[df_count['重復(fù)次數(shù)'] != 0].copy()
# 判斷錯(cuò)誤問題
df_result['錯(cuò)誤原因'] = df_result.apply(lambda x: '漏記' if x['重復(fù)次數(shù)']< 0 else ('重復(fù)記錄/多記' if x['重復(fù)次數(shù)'] > 1 else '多記/錯(cuò)記'), axis=1) print('借方-收款出現(xiàn)的錯(cuò)誤')
df_result[['錯(cuò)誤原因']]
# 列出兩張表中具體的行 # 公司銀行存款明細(xì)賬中的多記/錯(cuò)記 df_gs[df_gs['借方'] == 1.00]
# 銀行流水中的漏記 df_yh[(df_yh['收款金額'] == 637146.52) |
(df_yh['收款金額'] == 27023289.88) ]
讀取兩張 Excel 表的數(shù)據(jù)
import pandas as pd # 讀取公司明細(xì)賬 df_gs = pd.read_excel('./對(duì)賬數(shù)據(jù)/公司銀行存款明細(xì)賬.xlsx',header=1)
df_gs.head()
# 讀取銀行流水 df_yh = pd.read_excel('./對(duì)賬數(shù)據(jù)/銀行流水.xlsx',header=1)
df_yh.head()
數(shù)據(jù)清洗:修改列名
df_gs_jie = df_gs[['憑證號(hào)','借方']] df_gs_jie = df_gs_jie.rename(columns={'借方':'金額'})
df_gs_jie.head()
df_yh_shou = df_yh[['收款金額','對(duì)方戶名']] 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
根據(jù)金額進(jìn)行統(tǒng)計(jì)
df_count = mergedStuff_jie_shou.groupby(by='金額').count()
df_count
# 判斷金額出現(xiàn)的次數(shù) df_count['重復(fù)次數(shù)'] = df_count['憑證號(hào)'] - df_count['對(duì)方戶名']
df_count
# 重復(fù)次數(shù)不為0,就是沒有對(duì)上 df_result = df_count[df_count['重復(fù)次數(shù)'] != 0].copy()
df_result
# 判斷錯(cuò)誤問題
df_result['錯(cuò)誤原因'] = df_result.apply(lambda x: '漏記' if x['重復(fù)次數(shù)']< 0 else ('重復(fù)記錄/多記' if x['重復(fù)次數(shù)'] > 1 else '多記/錯(cuò)記'), axis=1) print('借方-收款出現(xiàn)的錯(cuò)誤')
df_result[['錯(cuò)誤原因']]
# 多記/錯(cuò)記 df_gs[df_gs['借方'] == 1.00]
# 漏記 df_yh[(df_yh['收款金額'] == 637146.52) |
(df_yh['收款金額'] == 27023289.88) ]
未來,你只要修改好需要讀取的表,確定需要比對(duì)的列,然后一鍵運(yùn)行,結(jié)果一瞬間就出來了,而且你之后每個(gè)月,每周,甚至每天要比對(duì)的時(shí)候,你只需要確定好你要比對(duì)的表,比對(duì)的數(shù)據(jù)列,就可以快速得到結(jié)果,代碼復(fù)用效率極高。你還可以進(jìn)一步查看各自表中具體行的數(shù)據(jù),方便你具體判斷。
數(shù)據(jù)分析咨詢請(qǐng)掃描二維碼
若不方便掃碼,搜微信號(hào):CDAshujufenxi
SQL Server 中 CONVERT 函數(shù)的日期轉(zhuǎn)換:從基礎(chǔ)用法到實(shí)戰(zhàn)優(yōu)化 在 SQL Server 的數(shù)據(jù)處理中,日期格式轉(zhuǎn)換是高頻需求 —— 無論 ...
2025-09-18MySQL 大表拆分與關(guān)聯(lián)查詢效率:打破 “拆分必慢” 的認(rèn)知誤區(qū) 在 MySQL 數(shù)據(jù)庫(kù)管理中,“大表” 始終是性能優(yōu)化繞不開的話題。 ...
2025-09-18CDA 數(shù)據(jù)分析師:表結(jié)構(gòu)數(shù)據(jù) “獲取 - 加工 - 使用” 全流程的賦能者 表結(jié)構(gòu)數(shù)據(jù)(如數(shù)據(jù)庫(kù)表、Excel 表、CSV 文件)是企業(yè)數(shù)字 ...
2025-09-18DSGE 模型中的 Et:理性預(yù)期算子的內(nèi)涵、作用與應(yīng)用解析 動(dòng)態(tài)隨機(jī)一般均衡(Dynamic Stochastic General Equilibrium, DSGE)模 ...
2025-09-17Python 提取 TIF 中地名的完整指南 一、先明確:TIF 中的地名有哪兩種存在形式? 在開始提取前,需先判斷 TIF 文件的類型 —— ...
2025-09-17CDA 數(shù)據(jù)分析師:解鎖表結(jié)構(gòu)數(shù)據(jù)特征價(jià)值的專業(yè)核心 表結(jié)構(gòu)數(shù)據(jù)(以 “行 - 列” 規(guī)范存儲(chǔ)的結(jié)構(gòu)化數(shù)據(jù),如數(shù)據(jù)庫(kù)表、Excel 表、 ...
2025-09-17Excel 導(dǎo)入數(shù)據(jù)含缺失值?詳解 dropna 函數(shù)的功能與實(shí)戰(zhàn)應(yīng)用 在用 Python(如 pandas 庫(kù))處理 Excel 數(shù)據(jù)時(shí),“缺失值” 是高頻 ...
2025-09-16深入解析卡方檢驗(yàn)與 t 檢驗(yàn):差異、適用場(chǎng)景與實(shí)踐應(yīng)用 在數(shù)據(jù)分析與統(tǒng)計(jì)學(xué)領(lǐng)域,假設(shè)檢驗(yàn)是驗(yàn)證研究假設(shè)、判斷數(shù)據(jù)差異是否 “ ...
2025-09-16CDA 數(shù)據(jù)分析師:掌控表格結(jié)構(gòu)數(shù)據(jù)全功能周期的專業(yè)操盤手 表格結(jié)構(gòu)數(shù)據(jù)(以 “行 - 列” 存儲(chǔ)的結(jié)構(gòu)化數(shù)據(jù),如 Excel 表、數(shù)據(jù) ...
2025-09-16MySQL 執(zhí)行計(jì)劃中 rows 數(shù)量的準(zhǔn)確性解析:原理、影響因素與優(yōu)化 在 MySQL SQL 調(diào)優(yōu)中,EXPLAIN執(zhí)行計(jì)劃是核心工具,而其中的row ...
2025-09-15解析 Python 中 Response 對(duì)象的 text 與 content:區(qū)別、場(chǎng)景與實(shí)踐指南 在 Python 進(jìn)行 HTTP 網(wǎng)絡(luò)請(qǐng)求開發(fā)時(shí)(如使用requests ...
2025-09-15CDA 數(shù)據(jù)分析師:激活表格結(jié)構(gòu)數(shù)據(jù)價(jià)值的核心操盤手 表格結(jié)構(gòu)數(shù)據(jù)(如 Excel 表格、數(shù)據(jù)庫(kù)表)是企業(yè)最基礎(chǔ)、最核心的數(shù)據(jù)形態(tài) ...
2025-09-15Python HTTP 請(qǐng)求工具對(duì)比:urllib.request 與 requests 的核心差異與選擇指南 在 Python 處理 HTTP 請(qǐng)求(如接口調(diào)用、數(shù)據(jù)爬取 ...
2025-09-12解決 pd.read_csv 讀取長(zhǎng)浮點(diǎn)數(shù)據(jù)的科學(xué)計(jì)數(shù)法問題 為幫助 Python 數(shù)據(jù)從業(yè)者解決pd.read_csv讀取長(zhǎng)浮點(diǎn)數(shù)據(jù)時(shí)的科學(xué)計(jì)數(shù)法問題 ...
2025-09-12CDA 數(shù)據(jù)分析師:業(yè)務(wù)數(shù)據(jù)分析步驟的落地者與價(jià)值優(yōu)化者 業(yè)務(wù)數(shù)據(jù)分析是企業(yè)解決日常運(yùn)營(yíng)問題、提升執(zhí)行效率的核心手段,其價(jià)值 ...
2025-09-12用 SQL 驗(yàn)證業(yè)務(wù)邏輯:從規(guī)則拆解到數(shù)據(jù)把關(guān)的實(shí)戰(zhàn)指南 在業(yè)務(wù)系統(tǒng)落地過程中,“業(yè)務(wù)邏輯” 是連接 “需求設(shè)計(jì)” 與 “用戶體驗(yàn) ...
2025-09-11塔吉特百貨孕婦營(yíng)銷案例:數(shù)據(jù)驅(qū)動(dòng)下的精準(zhǔn)零售革命與啟示 在零售行業(yè) “流量紅利見頂” 的當(dāng)下,精準(zhǔn)營(yíng)銷成為企業(yè)突圍的核心方 ...
2025-09-11CDA 數(shù)據(jù)分析師與戰(zhàn)略 / 業(yè)務(wù)數(shù)據(jù)分析:概念辨析與協(xié)同價(jià)值 在數(shù)據(jù)驅(qū)動(dòng)決策的體系中,“戰(zhàn)略數(shù)據(jù)分析”“業(yè)務(wù)數(shù)據(jù)分析” 是企業(yè) ...
2025-09-11Excel 數(shù)據(jù)聚類分析:從操作實(shí)踐到業(yè)務(wù)價(jià)值挖掘 在數(shù)據(jù)分析場(chǎng)景中,聚類分析作為 “無監(jiān)督分組” 的核心工具,能從雜亂數(shù)據(jù)中挖 ...
2025-09-10統(tǒng)計(jì)模型的核心目的:從數(shù)據(jù)解讀到?jīng)Q策支撐的價(jià)值導(dǎo)向 統(tǒng)計(jì)模型作為數(shù)據(jù)分析的核心工具,并非簡(jiǎn)單的 “公式堆砌”,而是圍繞特定 ...
2025-09-10