房贷计算及比较

本博客主要介绍:

  1. 等额本金计算公式

  2. 等额本息计算公式

  3. 对比两种还款方式

  4. 本示例:贷款金额为35万, 期限12年,年利率4.9%

等额本金计算

python 复制代码
import matplotlib.pyplot as plt 
import matplotlib 
matplotlib.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签  
matplotlib.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号




A = 350000
RATE = 0.049
N = 144
benjin = A/N
month_detail = []
n = 0
while n < N:
    tmp = []
    
    n += 1
    tmp.append(n)
    tmp.append(A)
    lixi = A*RATE/12
    A = A - benjin
    
    tmp.append(benjin)
    tmp.append(lixi)
    tmp.append(benjin+lixi)
    month_detail.append(tmp)

    
    

等额本息计算

python 复制代码
A = 350000
RATE = 0.049/12
N = 144
yuegong = (A*RATE*(1+RATE)**N)/((1+RATE)**N-1)
print('yuegong', yuegong)
month_detail_2 = []
n = 0
while n < N:
    n += 1
    tmp = []
    tmp.append(n)
    tmp.append(A)
    lixi = A*RATE
    benjin = yuegong - lixi
    A = A - benjin
    tmp.append(benjin)
    tmp.append(lixi)
    tmp.append(yuegong)
    month_detail_2.append(tmp)
    
    

月利息比较

python 复制代码
# 使用plot函数绘制两组折线 
x = list(range(145))[1:]
plt.plot(x, list(i[3] for i in month_detail), label='等额本金', color='red', linestyle='-')  # 绘制y1折线  
plt.plot(x, list(i[3] for i in month_detail_2), label='等额本息', color='blue', linestyle='--')  # 绘制y2折线
# 显示图形  
plt.legend() 
plt.title('月利息') 
plt.xlabel('期数')  
plt.ylabel('利息')  
plt.show()

月本金比较

python 复制代码
# 使用plot函数绘制两组折线 
x = list(range(145))[1:]
plt.plot(x, list(i[2] for i in month_detail), label='等额本金', color='red', linestyle='-')  # 绘制y1折线  
plt.plot(x, list(i[2] for i in month_detail_2), label='等额本息', color='blue', linestyle='--')  # 绘制y2折线
# 显示图形  
plt.legend() 
plt.title('月本金') 
plt.xlabel('期数')  
plt.ylabel('本金')  
plt.show()

累计利息

python 复制代码
# 使用plot函数绘制两组折线 
x = list(range(145))[1:]
plt.plot(x, [sum(each[3] for each in month_detail[:i+1]) for i in range(144)], label='等额本金', color='red', linestyle='-')  # 绘制y1折线  
plt.plot(x, [sum(each[3] for each in month_detail_2[:i+1]) for i in range(144)], label='等额本息', color='blue', linestyle='--')  # 绘制y2折线
# 显示图形  
plt.legend() 
plt.title('累计利息') 
plt.xlabel('期数')  
plt.ylabel('累计利息')  
plt.show()

累计利息差额

随着还款进行,两种还款方式,总支付利息上的差异

python 复制代码
# 使用plot函数绘制两组折线 
x = list(range(145))[1:]
plt.plot(x, [sum(each2[3]-each1[3] for each1,each2 in zip(month_detail[:i+1],month_detail_2[:i+1])) for i in range(144)], color='red', linestyle='-')  # 绘制y1折线  
# 显示图形  
plt.legend() 
plt.title('利息差额') 
plt.xlabel('期数')  
plt.ylabel('利息')  
plt.show()

可以看到两者的利息差额,从一开始就是等额本息还的利息更多,中期差距拉开的更快

剩余贷款金额

python 复制代码
# 使用plot函数绘制两组折线 
x = list(range(145))[1:]
plt.plot(x, list(i[1] for i in month_detail), label='等额本金', color='red', linestyle='-')  # 绘制y1折线  
plt.plot(x, list(i[1] for i in month_detail_2), label='等额本息', color='blue', linestyle='--')  # 绘制y2折线
# 显示图形  
plt.legend() 
plt.title('月剩余贷款') 
plt.xlabel('期数')  
plt.ylabel('金额')  
plt.show()

月供

python 复制代码
# 使用plot函数绘制两组折线 
x = list(range(145))[1:]
plt.plot(x, list(i[4] for i in month_detail), label='等额本金', color='red', linestyle='-')  # 绘制y1折线  
plt.plot(x, list(i[4] for i in month_detail_2), label='等额本息', color='blue', linestyle='--')  # 绘制y2折线
# 显示图形  
plt.legend() 
plt.title('月供') 
plt.xlabel('期数')  
plt.ylabel('金额')  
plt.show()
相关推荐
小张贼嚣张3 分钟前
数据分析全流程实战:Python(Pandas/Matplotlib/Numpy)+ MySQL(附可下载数据源+多图形绘制)
python·数据分析·pandas
努力的小白o(^▽^)o11 分钟前
面向课堂考勤场景的桌面端人脸识别签到系统
python·人脸识别
sa100271 小时前
淘宝商品详情 API 接口开发实战:item_detail 调用、参数与 Python 示例
linux·数据库·python
Dapenson2 小时前
腾讯小龙虾WorkBuddy技能与插件深度解析
python·ai
无心水2 小时前
【常见错误】2、Java并发编程避坑指南:从加锁失效到死锁,10个案例教你正确使用锁
java·开发语言·python
困死,根本不会2 小时前
Python 连接 iBeacon 蓝牙设备超详细学习笔记
python·蓝牙服务·ibeacon
AI_56782 小时前
基于智优达平台的Python教学实践:从环境搭建到自动评测
开发语言·前端·人工智能·后端·python
怪侠_岭南一只猿2 小时前
爬虫阶段一实战练习题二:爬取当当网图书列表
css·爬虫·python·html
3DVisionary3 小时前
捕捉亚毫米级裂纹演化!DIC技术为裂纹扩展与抗裂研究带来全新方案
人工智能·python·3d·应变测量·金属3d打印·dic精度检验方法·各向异性
smchaopiao3 小时前
Python数据库操作:SQLAlchemy ORM指南
jvm·数据库·python