导入pandas、warnings模块并控制小数位数¶
In [1]:
import pandas as pd
import warnings
warnings.filterwarnings("ignore")
pd.options.display.float_format='{:.2f}'.format
读取记账数据¶
In [2]:
df_income = pd.read_excel("4170421-2023年1~6月收入记账凭证.xlsx")
df_income.fillna(0,inplace=True) #对空值进行填充
df_income
Out[2]:
| 科目代码 | 科目名称 | 客户名称 | 日期 | 凭证号 | 摘要 | 借方 | 贷方 | |
|---|---|---|---|---|---|---|---|---|
| 0 | 5401 | 开票收入 | 腾讯公司 | 44933 | 1 | 销售收入 | 10000 | 20000 |
| 1 | 5402 | 无票收入 | 阿里巴巴集团 | 44940 | 2 | 服务费 | 3000 | 5000 |
| 2 | 5401 | 开票收入 | 京东集团 | 44947 | 3 | 销售收入 | 15000 | 25000 |
| 3 | 5403 | 无票收入 | 美团点评 | 44954 | 4 | 租赁收入 | 4000 | 6000 |
| 4 | 5402 | 无票收入 | 百度公司 | 44961 | 5 | 服务费 | 3500 | 5500 |
| 5 | 5401 | 开票收入 | 滴滴出行 | 44968 | 6 | 销售收入 | 18000 | 28000 |
| 6 | 5403 | 无票收入 | 快手科技 | 44975 | 7 | 租赁收入 | 4500 | 6500 |
| 7 | 5402 | 无票收入 | 小米公司 | 44982 | 8 | 服务费 | 4000 | 6000 |
| 8 | 5401 | 开票收入 | 华为集团 | 44989 | 9 | 销售收入 | 21000 | 31000 |
| 9 | 5403 | 无票收入 | 爱奇艺公司 | 44996 | 10 | 租赁收入 | 5500 | 7500 |
读取发票明细数据¶
In [3]:
df_invo = pd.read_excel("4170421-2023年1~6月发票明细.xlsx")
df_invo.fillna(0,inplace=True) #对空值进行填充
df_invo
Out[3]:
| 发票代码 | 发票号码 | 购方名称 | 商品名称 | 开票日期 | 购方税号 | 金额 | 税率 | 税额 | 作废 | |
|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 23456 | 1 | 腾讯公司 | 手机 | 44933 | 111111000000000000 | 2000 | 0.16 | 320.00 | 否 |
| 1 | 123456 | 2 | 阿里巴巴集团 | 电脑 | 44940 | 222222222222222016 | 5000 | 0.16 | 800.00 | 否 |
| 2 | 123456 | 3 | 京东集团 | 空调 | 44947 | 333333333333332992 | 2500 | 0.16 | 400.00 | 否 |
| 3 | 123456 | 4 | 美团点评 | 房屋租赁费 | 44954 | 444444444444444032 | 6000 | 0.16 | 960.00 | 否 |
| 4 | 123456 | 5 | 百度公司 | 服务费 | 44961 | 555555555555555008 | 5500 | 0.16 | 880.00 | 否 |
| 5 | 123456 | 6 | 滴滴出行 | 销售收入 | 44968 | 666666666666665984 | 28000 | 0.16 | 4480.00 | 否 |
| 6 | 123456 | 7 | 快手科技 | 租赁收入 | 44975 | 777777777777777024 | 6500 | 0.16 | 1040.00 | 否 |
| 7 | 123456 | 8 | 小米公司 | 服务费 | 44982 | 888888888888888064 | 6000 | 0.16 | 960.00 | 否 |
| 8 | 123456 | 9 | 华为集团 | 销售收入 | 44989 | 999999999999998976 | 31000 | 0.16 | 5760.00 | 否 |
| 9 | 123456 | 10 | 爱奇艺公司 | 租赁收入 | 44996 | AAAAABBBBBCCCCCC | 7500 | 0.16 | 1289.00 | 是 |
筛选开票收入,计算凭证金额¶
In [4]:
df_income_computer = df_income[df_income['科目名称'].str.contains('开票收入')]
df_income_computer['凭证金额']=df_income_computer['贷方']-df_income_computer['借方']
df_income_computer
Out[4]:
| 科目代码 | 科目名称 | 客户名称 | 日期 | 凭证号 | 摘要 | 借方 | 贷方 | 凭证金额 | |
|---|---|---|---|---|---|---|---|---|---|
| 0 | 5401 | 开票收入 | 腾讯公司 | 44933 | 1 | 销售收入 | 10000 | 20000 | 10000 |
| 2 | 5401 | 开票收入 | 京东集团 | 44947 | 3 | 销售收入 | 15000 | 25000 | 10000 |
| 5 | 5401 | 开票收入 | 滴滴出行 | 44968 | 6 | 销售收入 | 18000 | 28000 | 10000 |
| 8 | 5401 | 开票收入 | 华为集团 | 44989 | 9 | 销售收入 | 21000 | 31000 | 10000 |
筛选发票数据¶
对开票系统的发票明细数据进行筛选,把作废的数据删除,只保留有效发票
In [5]:
df_invo_choose = df_invo[df_invo['作废']=='否']
df_invo_choose
Out[5]:
| 发票代码 | 发票号码 | 购方名称 | 商品名称 | 开票日期 | 购方税号 | 金额 | 税率 | 税额 | 作废 | |
|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 23456 | 1 | 腾讯公司 | 手机 | 44933 | 111111000000000000 | 2000 | 0.16 | 320.00 | 否 |
| 1 | 123456 | 2 | 阿里巴巴集团 | 电脑 | 44940 | 222222222222222016 | 5000 | 0.16 | 800.00 | 否 |
| 2 | 123456 | 3 | 京东集团 | 空调 | 44947 | 333333333333332992 | 2500 | 0.16 | 400.00 | 否 |
| 3 | 123456 | 4 | 美团点评 | 房屋租赁费 | 44954 | 444444444444444032 | 6000 | 0.16 | 960.00 | 否 |
| 4 | 123456 | 5 | 百度公司 | 服务费 | 44961 | 555555555555555008 | 5500 | 0.16 | 880.00 | 否 |
| 5 | 123456 | 6 | 滴滴出行 | 销售收入 | 44968 | 666666666666665984 | 28000 | 0.16 | 4480.00 | 否 |
| 6 | 123456 | 7 | 快手科技 | 租赁收入 | 44975 | 777777777777777024 | 6500 | 0.16 | 1040.00 | 否 |
| 7 | 123456 | 8 | 小米公司 | 服务费 | 44982 | 888888888888888064 | 6000 | 0.16 | 960.00 | 否 |
| 8 | 123456 | 9 | 华为集团 | 销售收入 | 44989 | 999999999999998976 | 31000 | 0.16 | 5760.00 | 否 |
按客户名称汇总凭证金额¶
从客户维度比骄傲收入记账凭证和发票明细数据
In [6]:
#按客户名称汇总凭证金额
dfincome = pd.pivot_table(df_income_computer,index=['客户名称'],values=['凭证金额'],aggfunc='sum').reset_index()
dfincome
Out[6]:
| 客户名称 | 凭证金额 | |
|---|---|---|
| 0 | 京东集团 | 10000 |
| 1 | 华为集团 | 10000 |
| 2 | 滴滴出行 | 10000 |
| 3 | 腾讯公司 | 10000 |
In [7]:
# 按购方名称汇总开票金额
dfinvo = pd.pivot_table(df_invo_choose,index=['购方名称'],values=['金额'],aggfunc='sum').reset_index()
dfinvo
Out[7]:
| 购方名称 | 金额 | |
|---|---|---|
| 0 | 京东集团 | 2500 |
| 1 | 华为集团 | 31000 |
| 2 | 小米公司 | 6000 |
| 3 | 快手科技 | 6500 |
| 4 | 滴滴出行 | 28000 |
| 5 | 百度公司 | 5500 |
| 6 | 美团点评 | 6000 |
| 7 | 腾讯公司 | 2000 |
| 8 | 阿里巴巴集团 | 5000 |
In [8]:
#计算差额
diff = dfincome.merge(dfinvo,how='outer',left_on='客户名称',right_on='购方名称')
diff['差额'] = diff['凭证金额']-diff['金额']
diff
Out[8]:
| 客户名称 | 凭证金额 | 购方名称 | 金额 | 差额 | |
|---|---|---|---|---|---|
| 0 | 京东集团 | 10000.00 | 京东集团 | 2500 | 7500.00 |
| 1 | 华为集团 | 10000.00 | 华为集团 | 31000 | -21000.00 |
| 2 | NaN | NaN | 小米公司 | 6000 | NaN |
| 3 | NaN | NaN | 快手科技 | 6500 | NaN |
| 4 | 滴滴出行 | 10000.00 | 滴滴出行 | 28000 | -18000.00 |
| 5 | NaN | NaN | 百度公司 | 5500 | NaN |
| 6 | NaN | NaN | 美团点评 | 6000 | NaN |
| 7 | 腾讯公司 | 10000.00 | 腾讯公司 | 2000 | 8000.00 |
| 8 | NaN | NaN | 阿里巴巴集团 | 5000 | NaN |
In [ ]:
In [ ]:
In [ ]: