用python 自动计算亚马逊vat税款

简述下如何使用pandas计算亚马逊英国vat税款,纯粹是pandas的业务代码。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#%%
import pandas as pd
#%%
vat_csv = r"C:\Users\Administrator\Downloads\18168935102018178.csv"

df = pd.read_csv(vat_csv)
#%%
def filter_free_tax_zone_post_code(x : str):
if type(x) is not str:
return False
return x.startswith('JE') or x.startswith('GY')
# # BN列邮编首字母为JE和GY的,是英国的附属岛屿,目前有免税优惠,不用计算
df = df[~df['ARRIVAL_POST_CODE'].apply(filter_free_tax_zone_post_code)].copy()

#%%
# BO SALE_DEPART_COUNTRY 发货国家 BP SALE_ARRIVAL_COUNTRY 收货国家
# AZ TOTAL_ACTIVITY_VALUE_AMT_VAT_INCL 销售额 BA TRANSACTION_CURRENCY_CODE 货币
df['SALE_DEPART_COUNTRY'].value_counts()


#%%
SALE_ARRIVAL_COUNTRY_ = df['SALE_ARRIVAL_COUNTRY'].value_counts().index



#%%
euro_nation_code_excel = 'euro-nation-code.xlsx'
euro_country = pd.read_excel(euro_nation_code_excel)['CODE'].values

#%%
# step 1
A = df[df['SALE_DEPART_COUNTRY'].isin(euro_country)]
step_1_df = A[A['SALE_ARRIVAL_COUNTRY'] == 'GB']
step_1 = step_1_df[['TOTAL_ACTIVITY_VALUE_AMT_VAT_INCL', 'TRANSACTION_CURRENCY_CODE']].groupby(['TRANSACTION_CURRENCY_CODE']).sum()

step_1 = step_1['TOTAL_ACTIVITY_VALUE_AMT_VAT_INCL'].to_dict()
step_1
#%%
# step 2
A = df[df['SALE_DEPART_COUNTRY'] == 'GB']
except_country = "DE GB ES IT FR".split(' ')
sub_euro_country = [i for i in euro_country if i not in except_country]
step_2_df = A[A['SALE_ARRIVAL_COUNTRY'] .isin(sub_euro_country)]
step_2 = step_2_df[['TOTAL_ACTIVITY_VALUE_AMT_VAT_INCL', 'TRANSACTION_CURRENCY_CODE']].groupby(['TRANSACTION_CURRENCY_CODE']).sum()
step_2 = step_2['TOTAL_ACTIVITY_VALUE_AMT_VAT_INCL'].to_dict()
step_2


#%%
# TOTAL
euro2gbp = 0.8637
# euro2gbp = 1 / 1.1504
tax_rate = 0.155
other = 26510.48

euro = step_1.get('EUR', 0) + step_2.get('EUR', 0)
gbp = step_1.get('GBP', 0) + step_2.get('GBP', 0)
total = gbp + euro2gbp * euro

vat = round(total * tax_rate, 2)

vat
#%%
s = f"""第一步中算的英镑 {step_1.get('GBP', 0) :.2f} 欧元 {step_1.get('EUR', 0) :.2f}
第二步中算的英镑 {step_2.get('GBP', 0) :.2f} 欧元 {step_2.get('EUR', 0) :.2f}
共计 英镑 {gbp :.2f}元,欧元{euro :.2f}元,
按照当前欧元兑英镑汇率为 {euro2gbp :.2f}
共计英镑 {total :.2f} 元,
按照vat税率 {tax_rate}
计算的vat税款为 {vat}
与提供的数据差值为 {vat - other :.2f}
"""

print(s)

附赠欧盟28国的国家代码,当前(2019-10-24)英国还算是欧盟国家

德国DE
荷兰NL
比利时BE
卢森堡LU
法国FR
意大利IT
丹麦DK
英国GB
爱尔兰IE
希腊GR
西班牙ES
葡萄牙PT
瑞典SE
芬兰FI
奥地利AT
塞浦路斯CY
爱沙尼亚EE
拉脱维亚LV
立陶宛LT
波兰PL
捷克CZ
斯洛伐克SK
斯洛文尼亚SI
匈牙利HU
马耳他MT
罗马尼亚RO
保加利亚BG
克罗地亚HR

现在Pycharm对于jupyter notebook的支持也很好了,我基本上直接在IDE里面写,这个主题是Gradianto Dark Fuchsia,Jetbrains官网可以下载,PyCharm不是只有Darcula的,好了,我大约一年没有更了,现在正式回归了,我现在做的是电商行业,以后我也许会更多的是生产力软件、爬虫与数据分析、企业系统方面转了,从来就不是正经的数据科学家。生命过程很复杂很丰富,继续做个顽强的人,祝大家1024程序员节快乐,我还算程序员的吧🤣哈哈哈