基于收支模拟花呗还款情况 2019-05-29

image.png

收支情况模拟构建思路:
1、构建税收函数
2、构建专项扣除函数
3、构建社保函数
4、构建奖金函数
5、构建10年(即120个月)的专项扣除后和社保扣除后的税收函数
6、构建支出函数
7、构建花呗使用情况模型
8、每次取不同的随机数进行模拟

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
import warnings
warnings.filterwarnings

1、构建税收函数

def tax(x):
    if x<=5000:
        return 0
    elif x<=(5000+3000):
        return (x-5000)*0.03
    elif x<=(5000+3000+4000):
        return 3000*0.03+(x-5000-3000)*0.1
    elif x<=(5000+3000+4000+13000):
        return 3000*0.03+4000*0.1+(x-5000-3000-4000)*0.2
    elif x<=(5000+3000+4000+13000+10000):
        return 3000*0.03+4000*0.1+13000*0.2+(x-5000-3000-4000-13000)*0.25
    elif x<=(5000+3000+4000+13000+10000+20000):
        return 3000*0.03+4000*0.1+13000*0.2+10000*0.25+(x-5000-3000-4000-13000-10000)*0.3
    elif x<=(5000+3000+4000+13000+10000+20000+25000):
        return 3000*0.03+4000*0.1+13000*0.2+10000*0.25+20000*0.3+(x-5000-3000-4000-13000-10000-20000)*0.35
    elif x<=(5000+3000+4000+13000+10000+20000+25000+100000):
        return (x-5000)*0.45

2、构建专项扣除函数
ched:子女教育,每个子女按1000元/月扣除,ched_mount:子女教育数量
mortgage:首套房贷利息,按1000元/月扣除,=1则为有,=0则为没有
rent:住房租金,按1500元/月扣除,=1则为有,=0则为没有
support:赡养老人,独生子女按2000元/月,非独生子女每人1000元/月扣除
only:是否独生,独生=2,非独生=1

def deduction(ched,ched_mount,mortgage,rent,support,only):
    if mortgage==1:
        return 1000*ched_mount+1000+support*1000*only
    else:
        return 1000*ched_mount+rent*1500+support*1000*only

3、构建社保函数

def insurance(s):#s为缴费基数
    insurance_i=pd.DataFrame({
        '养老保险':s*0.08,
        '医疗保险':s*0.02,
        '失业保险':s*0.01
    },index = [0])
    insurance_i['社保扣除']=insurance_i['养老保险']+insurance_i['医疗保险']+insurance_i['失业保险']
    return int(insurance_i['社保扣除'])

4、构建奖金函数

def bouns(a):
    return pd.Series(np.random.normal(loc=a,scale=200,size=120))

5、构建120个月的专项扣除后和社保扣除后的税收函数

def final_tax(s,s1,a,ched,ched_mount,mortgage,rent,support,only):
    df_i=pd.DataFrame({
        '月薪':[s for i in range(120)],
        '专项扣除':[deduction(ched,ched_mount,mortgage,rent,support,only) for i in range(120)],
        '社保扣除':[insurance(s1) for i in range(120)],
        '奖金':bouns(a)
    })
    df_i['计税部分']=df_i['月薪']+df_i['奖金'] 
    df_i['税收']=df_i['计税部分'].apply(lambda x:tax(x))
    df_i['净收入']=df_i['月薪']+df_i['奖金']-df_i['税收']-df_i['社保扣除']
    return df_i

出图:前12个月收入柱状图

plt.title('前12个月收入柱状图')
df2['净收入'].iloc[:12].plot(kind='Bar',stacked=True,alpha=0.6,color='Red')
plt.grid()
plt.figure(figsize=(12,4))
image.png

6、构建支出函数
假设总支出共分为五部分:房租水电(在3000左右,上下浮动200),家用(2000),基本生活支出(3000左右,上下浮动500),交际交通(2500左右,上下浮动800),日用品化妆品(2000左右,上下浮动500)

def expense():
    df_2=pd.DataFrame({
        '房租水电':np.random.normal(loc=3000,scale=200,size=120),
        '家用':[2000 for i in range (120)],
        '基本支出':np.random.normal(loc=3000,scale=500,size=120),
        '交通交际':np.random.normal(loc=2500,scale=800,size=120),
        '日用支出':np.random.normal(loc=2000,scale=500,size=120)
    })
    df_2['总支出']=df_2['房租水电']+df_2['家用']+df_2['基本支出']+df_2['交通交际']+df_2['日用支出']
    return df_2

出图:前12个月支出直方图

result[['房租水电','家用','基本支出','交通交际','日用支出']].iloc[:12].plot(kind='Bar',figsize=(8,6),
stacked=True,colormap='Reds_r',alpha=0.6)
plt.title('前12个月支出直方图')
plt.grid()
image.png

7、构建花呗使用情况模型,假设不使用分期

#制作样本数据(收入、支出、盈余、负债)
income=df2['净收入'].tolist()
exp=expense()['总支出'].tolist()
saving=[0 for i in range(120)]
debt=[0 for i in range(120)]
#构建收支模型
def case():
    month=[]#存放月份
    data=[]#存放收支数据
    for i in range(119):
        money=income[i]+saving[i]-exp[i]-debt[i]
        if money<-10000:
            print('第%i个月花呗也救不了我了,我要吃土了!!!'%i)
        else:
            if money>0:
                saving[i+1]=income[i]+saving[i]-exp[i]-debt[i]
                debt[i+1]=0
            else:
                saving[i+1]=0
                debt[i+1]=-(income[i]+saving[i]-exp[i]-debt[i])
        month.append(i+1)
        data.append([income[i],exp[i],saving[i+1],debt[i+1]])
    result=pd.DataFrame(data,columns=['月收入','月支出','盈余','负债'],index=month)
    return result

出图:前12个月收支盈亏情况

case().iloc[:12].plot(kind='Bar',figsize=(7,5),stacked=True,colormap='Reds',alpha=0.6)
plt.title('前12个月收支盈亏情况')
plt.grid()
image.png

8、每次取不同的支出随机数进行模拟并出图

case_a=[]
for i in range(10):
    print('正在进行第%i次模拟'%i)
    income=df2['净收入'].tolist()
    exp=expense()['总支出'].tolist()
    saving=[0 for i in range(120)]
    debt=[0 for i in range(120)]
    result_a=case()
    case_a.append(result_a)
    result_a.iloc[:12].plot(kind='Bar',figsize=(10,8),stacked=True,colormap='Reds',alpha=0.6)
    plt.title('第%i次模拟,前12个月收支盈亏情况'%i)
    plt.grid()

以上即为此次模拟全过程,快来预测看看吧~

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,045评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,114评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,120评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,902评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,828评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,132评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,590评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,258评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,408评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,335评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,385评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,068评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,660评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,747评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,967评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,406评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,970评论 2 341

推荐阅读更多精彩内容

  • 有一种坚强,叫做自己行走。
    十七八岁的夏天阅读 151评论 0 1
  • 文枯思断 但这几日偶然做了一手好菜卤。夏天配点小葱黄瓜丝,回到很多年的美好回忆。 主料:土豆、花菜(这二种主菜,可...
    夜煞_e451阅读 352评论 0 1
  • 我:儿子,这两天作业很多,妈妈理解你很辛苦。 儿子:多的我都不想写。 我:妈妈看到你很努力的在做好自己的事情。 儿...
    小石印儿阅读 251评论 0 2
  • 今天,我第一次体会到了没钱的滋味。 早晨,去学校文印室打印论文,我想到上次也就两三块,这次应该也差不多,我拿出支付...
    你看看你啊阅读 157评论 0 0