用Python簡單粗暴地算一下自己未來五年的經(jīng)濟狀況

In [1]: # 導(dǎo)入必要的包(pandas是真的好用慕购,我要吹爆)
   ...: import pandas as pd
   ...: import calendar

當前經(jīng)濟狀況:

  1. 從2018年6月畢業(yè)開始工作躬络,不再依賴父母尖奔。
  2. 目前算半個程序員搭儒,在基因檢測行業(yè)做研發(fā)穷当,主要工作是分析二代測序數(shù)據(jù)。
  3. 5年內(nèi)幾乎不太可能有買房之類的巨大的花銷淹禾。

消費數(shù)據(jù):

數(shù)據(jù)來自支付寶馁菜,電腦網(wǎng)頁可以導(dǎo)出所有的交易記錄,我導(dǎo)出了2018年5月31號到2019年3月2號的數(shù)據(jù)铃岔。

Notes:

  1. 支付寶數(shù)據(jù)下載下來是CSV格式的汪疮,里面有些詭異的Tab峭火,這里已經(jīng)提前處理了一下,并刪除了涉及隱私的列智嚷。
  2. 微信的賬單只能導(dǎo)出最近三個月的并且我沒有導(dǎo)出成功卖丸,況且微信我用得很少,略去盏道。
In [2]: data = pd.read_excel('/Users/andy/Downloads/alipay_record_20190302_1106_1.xlsx')
In [3]: data.head()
Out[3]:
                          交易號        交易創(chuàng)建時間  金額(元) 收/支  交易狀態(tài)
0          20190302335361374751 2019-03-02 10:29:38   0.21  收入  交易成功
1  2019030122001429751027790925 2019-03-01 18:17:54  20.00  支出  交易成功
2          20190301329976940751 2019-03-01 09:42:23   0.21  收入  交易成功
3  2019022822001429751027668747 2019-02-28 18:29:43  18.00  支出  交易成功
4          20190228326079942751 2019-02-28 06:38:13   0.21  收入  交易成功

計算總支出稍浆。

In [4]: data[data['收/支'] == '支出']['金額(元)'].sum()
Out[4]: 57645.51

計算平均支出。

In [5]: data[data['收/支'] == '支出']['金額(元)'].sum() / (data['交易創(chuàng)建時間'].max() - data['交易創(chuàng)建時間'].min()).days
Out[5]: 209.62003636363636

計算一天過去猜嘱,手里還有多少錢衅枫。

In [6]: def saving(times, expenses_func, income_func, init=0):
   ...:     for date in times:
   ...:         init = init - expenses_func(date) + income_func(date, init)
   ...:         yield init
   ...:

創(chuàng)建時間序列,為了方便朗伶,這里計算2019-2023這五年時間里的經(jīng)濟情況弦撩。

In [7]: time_goes_by = pd.date_range(start='2019-01-01', end='2023-12-31')

In [8]: time_goes_by
Out[8]:
DatetimeIndex(['2019-01-01', '2019-01-02', '2019-01-03', '2019-01-04',
               '2019-01-05', '2019-01-06', '2019-01-07', '2019-01-08',
               '2019-01-09', '2019-01-10',
               ...
               '2023-12-22', '2023-12-23', '2023-12-24', '2023-12-25',
               '2023-12-26', '2023-12-27', '2023-12-28', '2023-12-29',
               '2023-12-30', '2023-12-31'],
              dtype='datetime64[ns]', length=1826, freq='D')

一、小試牛刀

上面計算了论皆,每天平均支出209+益楼,這里簡單粗暴地計算為每天支出210元。

In [9]: def expenses(date):
   ...:     return 210
   ...:

因為我是研發(fā)人員点晴,所以每個月的收入基本是固定的偏形,因為五險一金什么的計算比較復(fù)雜就不算了。平時每個月5號發(fā)工資觉鼻,銀行卡到賬都是6000左右俊扭,簡單粗暴按6000處理。

In [10]: def income(date, money):
    ...:     return 6000 if date.day == 5 else 0
    ...:

算一下每天過去后手上還有多少錢坠陈。

In [11]: money = pd.Series(saving(time_goes_by, expenses, income), index=time_goes_by, name='saving').to_frame()

In [12]: # 看下第一個星期和最后一個星期
    ...: money.head(7).append(pd.Series(data=['...'], index=['saving'], name='...')).append(money.tail(7))
Out[12]:
                     saving
2019-01-01 00:00:00    -210
2019-01-02 00:00:00    -420
2019-01-03 00:00:00    -630
2019-01-04 00:00:00    -840
2019-01-05 00:00:00    4950
2019-01-06 00:00:00    4740
2019-01-07 00:00:00    4530
...                     ...
2023-12-25 00:00:00  -22200
2023-12-26 00:00:00  -22410
2023-12-27 00:00:00  -22620
2023-12-28 00:00:00  -22830
2023-12-29 00:00:00  -23040
2023-12-30 00:00:00  -23250
2023-12-31 00:00:00  -23460

畫一下增長曲線萨惑。

In [13]: # 只畫每個月最后一天的情況
    ...: money.resample('MS').last().plot(figsize=(16, 10))
增長曲線-1

當前收入根本無法支撐自己的花銷!3鸱庸蔼!當場破產(chǎn)!贮匕!


二姐仅、年終獎

按上面的算法,我早就破產(chǎn)了刻盐,但是實際上我還活得挺好掏膏,想來想去,原來是沒算年終獎敦锌,按照今年的情況馒疹,年終獎按1W算。

In [14]: def income(date, money):
    ...:     # 每月5號發(fā)工資
    ...:     wage = 6000 if date.day == 5 else 0
    ...:     # 每年2月發(fā)年終獎
    ...:     bonus = 10000 if date.day == 5 and date.month == 2 else 0
    ...:     return wage + bonus
    ...:

同樣算一下每天過去后手上還有多少錢乙墙。

In [15]: money = pd.Series(saving(time_goes_by, expenses, income), index=time_goes_by, name='saving').to_frame()

In [16]: # 看下第一個星期和最后一個星期
    ...: money.head(7).append(pd.Series(data=['...'], index=['saving'], name='...')).append(money.tail(7))
Out[16]:
                    saving
2019-01-01 00:00:00   -210
2019-01-02 00:00:00   -420
2019-01-03 00:00:00   -630
2019-01-04 00:00:00   -840
2019-01-05 00:00:00   4950
2019-01-06 00:00:00   4740
2019-01-07 00:00:00   4530
...                    ...
2023-12-25 00:00:00  27800
2023-12-26 00:00:00  27590
2023-12-27 00:00:00  27380
2023-12-28 00:00:00  27170
2023-12-29 00:00:00  26960
2023-12-30 00:00:00  26750
2023-12-31 00:00:00  26540

畫一下增長曲線颖变。

In [17]: money.resample('MS').last().plot(figsize=(16, 10))
增長曲線-2

過日子全靠年終獎吧!腥刹!

二马胧、用發(fā)展的眼光看問題

offer中說,每年至少漲薪10%衔峰,支出也相應(yīng)增長一半吧漓雅,簡單粗暴。

In [18]: def income(date, money):
    ...:     # 每個月5號發(fā)工資
    ...:     wage = 6000 if date.day == 5 else 0
    ...:     # 每年2月發(fā)年終獎
    ...:     bonus = 10000 if date.day == 5 and date.month == 2 else 0
    ...:     # 每年收入增長10%
    ...:     return (wage + bonus) * 1.1 ** (date.year - 2019)
    ...:

In [19]: def expenses(date):
    ...:     # 每年支出增長5%
    ...:     return 210 * 1.05 ** (date.year - 2019)
    ...:

再算一下每天過去后手上還有多少錢

In [20]: money = pd.Series(saving(time_goes_by, expenses, income), index=time_goes_by, name='saving').to_frame()

In [21]: # 看下第一個星期和最后一個星期
    ...: money.head(7).append(pd.Series(data=['...'], index=['saving'], name='...')).append(money.tail(7))
Out[21]:
                      saving
2019-01-01 00:00:00     -210
2019-01-02 00:00:00     -420
2019-01-03 00:00:00     -630
2019-01-04 00:00:00     -840
2019-01-05 00:00:00     4950
2019-01-06 00:00:00     4740
2019-01-07 00:00:00     4530
...                      ...
2023-12-25 00:00:00  78389.6
2023-12-26 00:00:00  78134.3
2023-12-27 00:00:00  77879.1
2023-12-28 00:00:00  77623.8
2023-12-29 00:00:00  77368.6
2023-12-30 00:00:00  77113.3
2023-12-31 00:00:00  76858.1

畫一下增長曲線朽色。

In [22]: money.resample('MS').last().plot(figsize=(16, 10))
增長曲線-3

終于看到希望了邻吞,趕緊漲薪啊:小抱冷!


三、信貸和理財

以下是本人目前的金融操作手段:

  1. 所有支出梢褐,在可以的情況下都使用花唄或信用卡支付旺遮。
  2. 所有手里的錢都放在余額寶等可以支持快贖的貨幣基金。
In [23]: def income(date, money):
    ...:     # 簡單粗暴假設(shè)萬份收益0.75盈咳,這個年化利率不到3%耿眉,基本上是余額寶現(xiàn)在的收益
    ...:     interest = money / 10000 * 0.75 * 0.8 if money > 0 else 0
    ...:     # 每個月5號發(fā)工資
    ...:     wage = 6000 if date.day == 5 else 0
    ...:     # 每年2月發(fā)年終獎
    ...:     bonus = 10000 if date.day == 5 and date.month == 2 else 0
    ...:     # 每年收入增長10%
    ...:     return (wage + bonus) * 1.1 ** (date.year - 2019)  + interest
    ...:

In [24]: def expenses(date):
    ...:     if date.day == 10:  # 每月10號為花唄還款日,信用卡會更遲一些鱼响,簡單粗暴
    ...:         last_month = date - pd.DateOffset(months=1)
    ...:         # 需要還上個月的賬單
    ...:         return calendar.monthlen(year=last_month.year, month=last_month.month) * 210 * 1.05 ** (date.year - 2019)
    ...:     else:
    ...:         return 0
    ...:

還是算一下每天過去后手上還有多少錢鸣剪,注意這里算法是有點問題的,因為其實第一個月是不需要還上個月的賬單的丈积,但是因為最后一個月的賬單我們也沒還筐骇,所以……簡單粗暴。

In [25]: money = pd.Series(saving(time_goes_by, expenses, income), index=time_goes_by, name='saving').to_frame()

In [26]: # 看下第一個星期和最后一個星期
    ...: money.head(7).append(pd.Series(data=['...'], index=['saving'], name='...')).append(money.tail(7))
Out[26]:
                      saving
2019-01-01 00:00:00        0
2019-01-02 00:00:00        0
2019-01-03 00:00:00        0
2019-01-04 00:00:00        0
2019-01-05 00:00:00     6000
2019-01-06 00:00:00  6000.36
2019-01-07 00:00:00  6000.72
...                      ...
2023-12-25 00:00:00  80663.6
2023-12-26 00:00:00  80668.4
2023-12-27 00:00:00  80673.3
2023-12-28 00:00:00  80678.1
2023-12-29 00:00:00    80683
2023-12-30 00:00:00  80687.8
2023-12-31 00:00:00  80692.7

畫一下增長曲線江滨。

In [27]: money.resample('MS').last().plot(figsize=(16, 10))
增長曲線-2

看看房價铛纬,感覺自己前途渺茫!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末唬滑,一起剝皮案震驚了整個濱河市告唆,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌晶密,老刑警劉巖擒悬,帶你破解...
    沈念sama閱讀 211,290評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異惹挟,居然都是意外死亡茄螃,警方通過查閱死者的電腦和手機缝驳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評論 2 385
  • 文/潘曉璐 我一進店門连锯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來归苍,“玉大人,你說我怎么就攤上這事运怖∑雌” “怎么了?”我有些...
    開封第一講書人閱讀 156,872評論 0 347
  • 文/不壞的土叔 我叫張陵摇展,是天一觀的道長吻氧。 經(jīng)常有香客問我,道長咏连,這世上最難降的妖魔是什么盯孙? 我笑而不...
    開封第一講書人閱讀 56,415評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮祟滴,結(jié)果婚禮上振惰,老公的妹妹穿的比我還像新娘。我一直安慰自己垄懂,他們只是感情好骑晶,可當我...
    茶點故事閱讀 65,453評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著草慧,像睡著了一般桶蛔。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上漫谷,一...
    開封第一講書人閱讀 49,784評論 1 290
  • 那天仔雷,我揣著相機與錄音,去河邊找鬼舔示。 笑死朽寞,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的斩郎。 我是一名探鬼主播脑融,決...
    沈念sama閱讀 38,927評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼缩宜!你這毒婦竟也來了肘迎?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,691評論 0 266
  • 序言:老撾萬榮一對情侶失蹤锻煌,失蹤者是張志新(化名)和其女友劉穎妓布,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體宋梧,經(jīng)...
    沈念sama閱讀 44,137評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡匣沼,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,472評論 2 326
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了捂龄。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片释涛。...
    茶點故事閱讀 38,622評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡加叁,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出唇撬,到底是詐尸還是另有隱情它匕,我是刑警寧澤,帶...
    沈念sama閱讀 34,289評論 4 329
  • 正文 年R本政府宣布窖认,位于F島的核電站豫柬,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏扑浸。R本人自食惡果不足惜烧给,卻給世界環(huán)境...
    茶點故事閱讀 39,887評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望喝噪。 院中可真熱鬧创夜,春花似錦、人聲如沸仙逻。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽系奉。三九已至檬贰,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間缺亮,已是汗流浹背翁涤。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留萌踱,地道東北人葵礼。 一個月前我還...
    沈念sama閱讀 46,316評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像并鸵,于是被迫代替她去往敵國和親鸳粉。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,490評論 2 348

推薦閱讀更多精彩內(nèi)容