按照税务局的规定,员工的全年一次性奖金每年可享受一次按照除以12的商数确定税率计算个人所得税的优惠算法。网上又有人说该算法下存在个人所得税的盲区,在该盲区内多发1元奖金将会使交的税比增加的奖金还多。
为了验证该说法,我曾尝试在LibreOffice中用电子表格下公式进行计算,但是由于公式复杂且数据量大,很难完成。最终发现使用python配合pandas库可以非常快速地完成计算。
请看以下的代码,使用该代码可以在8秒钟内计算出1万至1百万(10000, 1000000)区间内每1元奖金变动对应的税率、速算扣除数、应纳税额、实际所得等信息。结果数据集占用的内存为60.4MB,该数据集导出为csv格式后占用的硬盘空间为77MB (可见数据量的确很大)。
可在python中利用该数据集进一步进行个人所得税临界点等各种分析,而不用导出为csv格式 – 在excel中操作如此大的数据集是不可能的。
#!/usr/bin/env python3 # coding: utf-8 import pandas as pd def get_level(salary_amount): if (salary_amount <= 1500): return {'rate': 3, 'deduction': 0} elif (salary_amount > 1500 and salary_amount <= 4500): return {'rate': 10, 'deduction': 105} elif (salary_amount > 4500 and salary_amount <= 9000): return {'rate': 20, 'deduction': 555} elif (salary_amount > 9000 and salary_amount <= 35000): return {'rate': 25, 'deduction': 1005} elif (salary_amount > 35000 and salary_amount <= 55000): return {'rate': 30, 'deduction': 2755} elif (salary_amount > 55000 and salary_amount <= 80000): return {'rate': 35, 'deduction': 5505} elif (salary_amount > 80000 and salary_amount <= 999999999): return {'rate': 45, 'deduction': 13505} elif (salary_amount == 0): return {'rate': 0, 'deduction': 0} def calculate(salary_amount, method="normal"): if (method == "normal"): basis = salary_amount - 3500 lv = get_level(basis) elif (method == "divide_12"): basis = salary_amount lv = get_level(basis/12) tax_rate = lv['rate'] / 100 deduction = lv['deduction'] tax_amount = basis * tax_rate - deduction return {u'税率': tax_rate, u'速算扣除数': deduction, u'应纳税额': tax_amount} def calculates(bonus): result = pd.DataFrame() result[u'奖金金额'] = list(bonus) result[u'除以12的商'] = result[u'奖金金额'] / 12 tax_df = pd.DataFrame([calculate(b, method='divide_12') for b in bonus]) result[tax_df.columns.tolist()] = tax_df result[u'税后所得'] = result[u'奖金金额'] - result[u'应纳税额'] result[u'实际税负'] = result[u'应纳税额'] / result[u'奖金金额'] return result if __name__ == '__main__': bonus = range(10000, 1000000) result = calculates(bonus) print(result) print() # result.to_csv(r'H:\scripts\python\tax\tax_details.csv') # 临界点分析 rates = result.税率.unique() for rate in rates: print(result[result.税率 == rate].iloc[0] # 适用税率第一个升高的值就是临界值 print()
输出:
奖金金额 除以12的商 应纳税额 税率 速算扣除数 税后所得 实际税负 0 10000 833.333333 300.00 0.03 0 9700.00 0.030000 1 10001 833.416667 300.03 0.03 0 9700.97 0.030000 2 10002 833.500000 300.06 0.03 0 9701.94 0.030000 3 10003 833.583333 300.09 0.03 0 9702.91 0.030000 4 10004 833.666667 300.12 0.03 0 9703.88 0.030000 5 10005 833.750000 300.15 0.03 0 9704.85 0.030000 6 10006 833.833333 300.18 0.03 0 9705.82 0.030000 7 10007 833.916667 300.21 0.03 0 9706.79 0.030000 8 10008 834.000000 300.24 0.03 0 9707.76 0.030000 9 10009 834.083333 300.27 0.03 0 9708.73 0.030000 10 10010 834.166667 300.30 0.03 0 9709.70 0.030000 11 10011 834.250000 300.33 0.03 0 9710.67 0.030000 12 10012 834.333333 300.36 0.03 0 9711.64 0.030000 13 10013 834.416667 300.39 0.03 0 9712.61 0.030000 14 10014 834.500000 300.42 0.03 0 9713.58 0.030000 15 10015 834.583333 300.45 0.03 0 9714.55 0.030000 16 10016 834.666667 300.48 0.03 0 9715.52 0.030000 17 10017 834.750000 300.51 0.03 0 9716.49 0.030000 18 10018 834.833333 300.54 0.03 0 9717.46 0.030000 19 10019 834.916667 300.57 0.03 0 9718.43 0.030000 20 10020 835.000000 300.60 0.03 0 9719.40 0.030000 21 10021 835.083333 300.63 0.03 0 9720.37 0.030000 22 10022 835.166667 300.66 0.03 0 9721.34 0.030000 23 10023 835.250000 300.69 0.03 0 9722.31 0.030000 24 10024 835.333333 300.72 0.03 0 9723.28 0.030000 25 10025 835.416667 300.75 0.03 0 9724.25 0.030000 26 10026 835.500000 300.78 0.03 0 9725.22 0.030000 27 10027 835.583333 300.81 0.03 0 9726.19 0.030000 28 10028 835.666667 300.84 0.03 0 9727.16 0.030000 29 10029 835.750000 300.87 0.03 0 9728.13 0.030000 ... ... ... ... ... ... ... ... 989970 999970 83330.833333 436481.50 0.45 13505 563488.50 0.436495 989971 999971 83330.916667 436481.95 0.45 13505 563489.05 0.436495 989972 999972 83331.000000 436482.40 0.45 13505 563489.60 0.436495 989973 999973 83331.083333 436482.85 0.45 13505 563490.15 0.436495 989974 999974 83331.166667 436483.30 0.45 13505 563490.70 0.436495 989975 999975 83331.250000 436483.75 0.45 13505 563491.25 0.436495 989976 999976 83331.333333 436484.20 0.45 13505 563491.80 0.436495 989977 999977 83331.416667 436484.65 0.45 13505 563492.35 0.436495 989978 999978 83331.500000 436485.10 0.45 13505 563492.90 0.436495 989979 999979 83331.583333 436485.55 0.45 13505 563493.45 0.436495 989980 999980 83331.666667 436486.00 0.45 13505 563494.00 0.436495 989981 999981 83331.750000 436486.45 0.45 13505 563494.55 0.436495 989982 999982 83331.833333 436486.90 0.45 13505 563495.10 0.436495 989983 999983 83331.916667 436487.35 0.45 13505 563495.65 0.436495 989984 999984 83332.000000 436487.80 0.45 13505 563496.20 0.436495 989985 999985 83332.083333 436488.25 0.45 13505 563496.75 0.436495 989986 999986 83332.166667 436488.70 0.45 13505 563497.30 0.436495 989987 999987 83332.250000 436489.15 0.45 13505 563497.85 0.436495 989988 999988 83332.333333 436489.60 0.45 13505 563498.40 0.436495 989989 999989 83332.416667 436490.05 0.45 13505 563498.95 0.436495 989990 999990 83332.500000 436490.50 0.45 13505 563499.50 0.436495 989991 999991 83332.583333 436490.95 0.45 13505 563500.05 0.436495 989992 999992 83332.666667 436491.40 0.45 13505 563500.60 0.436495 989993 999993 83332.750000 436491.85 0.45 13505 563501.15 0.436495 989994 999994 83332.833333 436492.30 0.45 13505 563501.70 0.436495 989995 999995 83332.916667 436492.75 0.45 13505 563502.25 0.436495 989996 999996 83333.000000 436493.20 0.45 13505 563502.80 0.436495 989997 999997 83333.083333 436493.65 0.45 13505 563503.35 0.436495 989998 999998 83333.166667 436494.10 0.45 13505 563503.90 0.436495 989999 999999 83333.250000 436494.55 0.45 13505 563504.45 0.436495 [990000 rows x 7 columns] 奖金金额 10000.000000 除以12的商 833.333333 应纳税额 300.000000 税率 0.030000 速算扣除数 0.000000 税后所得 9700.000000 实际税负 0.030000 Name: 0, dtype: float64 奖金金额 18001.000000 除以12的商 1500.083333 应纳税额 1695.100000 税率 0.100000 速算扣除数 105.000000 税后所得 16305.900000 实际税负 0.094167 Name: 8001, dtype: float64 奖金金额 54001.000000 除以12的商 4500.083333 应纳税额 10245.200000 税率 0.200000 速算扣除数 555.000000 税后所得 43755.800000 实际税负 0.189722 Name: 44001, dtype: float64 奖金金额 108001.000000 除以12的商 9000.083333 应纳税额 25995.250000 税率 0.250000 速算扣除数 1005.000000 税后所得 82005.750000 实际税负 0.240695 Name: 98001, dtype: float64 奖金金额 420001.000000 除以12的商 35000.083333 应纳税额 123245.300000 税率 0.300000 速算扣除数 2755.000000 税后所得 296755.700000 实际税负 0.293440 Name: 410001, dtype: float64 奖金金额 660001.000000 除以12的商 55000.083333 应纳税额 225495.350000 税率 0.350000 速算扣除数 5505.000000 税后所得 434505.650000 实际税负 0.341659 Name: 650001, dtype: float64 奖金金额 960001.000000 除以12的商 80000.083333 应纳税额 418495.450000 税率 0.450000 速算扣除数 13505.000000 税后所得 541505.550000 实际税负 0.435932 Name: 950001, dtype: float64
Leave a Reply