房贷计算及比较

本博客主要介绍:

  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()
相关推荐
我是华为OD~HR~栗栗呀31 分钟前
华为od-21届考研-C++面经
java·c语言·c++·python·华为od·华为·面试
明月(Alioo)40 分钟前
机器学习入门,无监督学习之K-Means聚类算法完全指南:面向Java开发者的Python实现详解
python·算法·机器学习
鱼鱼说测试1 小时前
Linux下运行Jmeter
开发语言·python
CodeCraft Studio2 小时前
国产化Excel开发组件Spire.XLS教程:将Python列表转换为Excel表格(3种实用场景)
开发语言·python·excel·spire.xls·python列表转excel·国产化文档开发
企鹅侠客2 小时前
基于python写的PDF表格提取到excel文档
python·pdf·excel·pdf文档表格转excel
mortimer2 小时前
Python 中那些鲜为人知但实用的工具函数
python
weixin_421133412 小时前
Django 的文档接口
python·django·sqlite
LK_073 小时前
【Open3D】Ch.3:顶点法向量估计 | Python
开发语言·笔记·python
小码哥0683 小时前
智能化招聘系统设计与实现-Java
开发语言·python
饮浊酒3 小时前
Python学习-----小游戏之人生重开模拟器(普通版)
python·学习·游戏程序