房贷计算及比较

本博客主要介绍:

  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+PyQt5+SQLite的药房管理系统实现:事务一致性与界面解耦全流程解析
python·sqlite·信号与槽·pyqt5·数据库设计·桌面应用开发·事务处理
金銀銅鐵4 小时前
[Python] 体验用欧几里得算法计算最大公约数的过程
python·数学
FreakStudio8 小时前
W55MH32L-EVB 上手测评:硬件 TCP/IP 加持的以太网单片机,MicroPython 零门槛开发
python·单片机·嵌入式·大学生·面向对象·并行计算·电子diy·电子计算机
用户0332126663679 小时前
使用 Python 从零创建 Word 文档
python
Csvn14 小时前
Python 两大经典坑点 —— 可变默认参数 & 闭包延迟绑定
后端·python
曲幽15 小时前
别再用网页翻译看源码了!你的私人翻译神器LibreTranslate,部署避坑指南来了
python·docker·web·pot·translate·libretranslate·arogstranslate
用户5569188175316 小时前
#从脚本到独立程序:Python + Playwright 批量抓取的完整踩坑记录
python·自动化运维
兵慌码乱1 天前
基于 MediaPipe 与 PySide2 的手势交互音乐控制系统实现:轻量化视觉交互全流程解析
python·opencv·计算机视觉·人机交互·手势识别·mediapipe·pyside2
luckdewei1 天前
FastAPI 资产管理系统实战:复杂 ORM 关联、Alembic 迁移与 N+1 查询优化
python