Python告訴你:為何年終獎多發一元,到手卻少兩千多?
作者 | shenzhongqiang
來源 | Python資料與分析(ID:ML_Python)
年終獎多發一元,到手卻要少兩千多,甚至更多。聽到這個訊息的時候,大家是不是覺得有點意外,意外之餘還有點淡淡的憂傷?
上了這麼多年班,我也是最近才搞清楚年終獎的稅是怎麼算的。年終獎的稅和工資稅的最大區別就是,年終獎沒有階梯稅率,沒有階梯稅率,沒有階梯稅率,重要的事情說三遍。
具體怎麼算,我們來看下面的公式。
稅率和速算扣除數按照稅率表,最新的稅率表如下。
我們假設一個人的年終獎是30000元,因為沒超過36000元,查上表得到稅率3%,速算扣除數是0,因此他要交的稅是30000 * 3% - 0 = 900元 。
如果一個人的年終獎是120000元,因為在36000元~144000元的區間內,查上表得到稅率10%,速算扣除數210,所以他要交的稅是120000 * 10% - 210 = 11790元 。
基於年終獎稅的計算方式,我們用Python實現了一個算稅的函式。程式碼如下。
import bisect
import numpy as np
import matplotlib.pyplot as plt
def bonus_tax(bonus):
ranges = [0, 36000, 144000, 300000, 420000, 660000, 960000]
deducts = [0, 210, 1410, 2660, 4410, 7160, 15160]
rate = [0.03, 0.1, 0.2, 0.25, 0.3, 0.35, 0.45]
i = bisect.bisect_left(ranges, bonus)
tax = bonus * rate[i-1] - deducts[i-1]
return tax
上面的bonus_tax函式就是算稅的函式,它接受一個引數bonus,就是我們的年終獎。
我們用這個函式來算一下,從1000元到1000000元區間內所有年終獎的稅各是多少。具體程式碼如下。
if __name__ == "__main__":
bonuses = range(10000, 1000000, 1)
taxes = []
net_incomes = []
for bonus in bonuses:
tax = bonus_tax(bonus)
taxes.append(tax)
net_incomes.append(bonus-tax)
plt.plot(bonuses, net_incomes)
plt.show()
這段程式的末尾會將稅後年終獎和稅前年終獎的關係製作成一張折線圖,展現出來,如下。
橫軸是稅前的年終獎,縱軸是稅後拿到手的收入。可以看到上圖中稅後到手的收入和稅前年終獎並不是呈現單調遞增的關係,在幾個節點上會出現突然的下跌,也就是說稅前年終獎雖然增加了,但稅後到手的收入卻減少了。
這是為什麼呢?
我們注意到這些突然的下跌都是出現在跨稅檔的邊界上。比如36000元的年終獎,需要交的稅是36000 * 3% - 0 = 1080元 ,但36001元的年終獎,就需要交36001 * 10% - 210 = 3390元 的稅,年終獎增加一元,收入反而減少了。同樣的問題也出現在144000元、300000元、420000元、660000元、960000元這些年終獎上。在這些跨稅檔的邊界上,年終獎雖然增加了,但因為跨了稅檔,稅率提高了,導致稅後所得反而減少了。
出現這個問題的根本原因,還是在於年終獎的計稅存在一個漏洞。年終獎計稅的稅率是基於工資稅的稅率表,工資稅的稅率表上收入額這一欄是月收入,而上面的表格裡的收入額是年收入,收入額乘以了12,但速算扣除數沒有,這就導致跨稅檔的時候會出現收入突然下跌。
如果我們把上面表格中的速算扣除數都乘以12,再畫一下稅後年終獎和稅前年終獎的關係圖,可以得到下面的圖。
這張圖就正常多了,圖上沒有突然下跌的斷層,稅後年終獎和稅前年終獎呈現單調遞增的關係。
看到這裡,大家是不是理解了年終獎的計稅方式了呢?祝大家都能避開跨稅檔的陷阱~
(本文為Python大本營投稿文章,轉載請聯絡作者。)
◆
公開課預告
◆
如何用AI技術為黑白老照片上色?本次公開課中,百度高階研發工程師李超將講述對抗生成網路相關,學術界的研究現狀和應用場景,以及GAN在百度視覺+百度PR+新華社合作的煥彩專案中的應用。
推薦閱讀
相關文章
- 【分享貼】辛苦加班了一年,為何年終獎比同級同事少?
- Python告訴你iPhoneX有多熱賣(附程式碼)PythoniPhone
- 用資料告訴你,今年考研上岸有多難!
- 資料視覺化告訴你,北京究竟有多熱?視覺化
- volatile和synchronized到底啥區別?多圖文講解告訴你synchronized
- 安全管理難?信服雲告訴你“內建安全”有多靠譜
- 西安達內告訴你企業走物聯網之路好處多
- 三十二張圖告訴你,Jenkins構建Spring Boot 有多簡單~JenkinsSpring Boot
- 為什麼你沒見過年終獎!
- 為什麼vivo NEX雙屏版被稱為遊戲神器?多維度體驗測試告訴你答案遊戲
- 一文告訴你Java日期時間API到底有多爛JavaAPI
- 一元稀疏多項式相加
- 大資料告訴你:為啥近5年來Python如此火爆?大資料Python
- 資料分析告訴你:為啥近5年來Python如此火爆?Python
- 印度IT 為何這麼發達?《全球“獵身”》告訴你答案
- 一篇文章告訴你:“12306”的架構到底有多牛逼?架構
- 一元多項式的應用
- 年終總結怎麼寫?用上資料視覺化,年終獎拿到手軟!視覺化
- 走過半個多世紀,計算機圖形學的發展歷程告訴你5毛錢的電影特效究竟多難計算機特效
- 我試圖透過這篇文章告訴你,這行原始碼有多牛逼。原始碼
- 多種方式告訴你如何計算DM同步資料到TiDB的延時時間TiDB
- 請你告訴我合併兩個陣列,你有多少種方法陣列
- Python如何開發網站?這兩個不能少!Python網站
- 用半勵志的方式告訴你,怎麼學習Python開發Python
- 錢多活少飯好吃的公司,你願意來嗎?
- 告別偏科,能玩轉多模態、多工、多領域的強化智慧體終於來了智慧體
- Python分析42年高考資料,告訴你高考為什麼這麼難?Python
- 一張圖告訴你學JAVA還是學Python!JavaPython
- [PAT B] 1010 一元多項式求導求導
- 各路資料庫蓬勃發展-多學習少扯淡資料庫
- Win系統 - 為什麼標註1TB的硬碟到手才900多G?硬碟
- Python老司機告訴你,學習Python應該讀哪些書!Python
- 誰告訴你 Flutter 會幹掉原生開發?Flutter
- Python 告訴你絕不知道的1983-2018 春晚Python
- python和Java學哪個?過來人告訴你答案!PythonJava
- 0基礎如何學習Python?4種方法告訴你!Python
- python程式設計師告訴你,python怎麼學?13個特性帶你快速瞭解pythonPython程式設計師
- Perl只比Python老了兩年卻被認為過時語言?Python