← 返回题库
初级

计算各级别贷款的拨备率

未完成
初级参考 完整示例代码供参考,建议自己理解后重新输入
def solve():
    from pyodide.http import open_url
    clients_csv = open_url("https://data.zuihe.com/dbd/credit/state_07/clients.csv").read()
    loans_csv = open_url("https://data.zuihe.com/dbd/credit/state_07/loans.csv").read()
    loan_classifications_csv = open_url("https://data.zuihe.com/dbd/credit/state_07/loan_classifications.csv").read()
    loan_provisions_csv = open_url("https://data.zuihe.com/dbd/credit/state_07/loan_provisions.csv").read()
    import sqlite3, pandas as pd
    from io import StringIO
    conn = sqlite3.connect(':memory:')
    pd.read_csv(StringIO(loan_classifications_csv)).to_sql('loan_classifications', conn, index=False, if_exists='replace')
    rates = {'NORMAL':0.01,'WATCH':0.02,'SUBSTANDARD':0.25,'DOUBTFUL':0.50,'LOSS':1.00}
    order = {'NORMAL':1,'WATCH':2,'SUBSTANDARD':3,'DOUBTFUL':4,'LOSS':5}
    result = pd.read_sql_query("SELECT classification, SUM(outstanding_balance) as total_balance FROM loan_classifications GROUP BY classification", conn)
    result['provision_rate'] = result['classification'].map(rates)
    result['theoretical_provision'] = result.apply(lambda r: round(r['total_balance'] * r['provision_rate'], 2), axis=1)
    result['sort_key'] = result['classification'].map(order)
    result = result.sort_values('sort_key').drop('sort_key', axis=1)
    print(result[['classification','provision_rate','total_balance','theoretical_provision']].to_string(index=False))
    conn.close()

示例

输入
solve()
期望输出
classification  provision_rate  total_balance  theoretical_provision
        NORMAL            0.01        4536000                45360.0
         WATCH            0.02          52000                 1040.0
   SUBSTANDARD            0.25        1378000               344500.0
      DOUBTFUL            0.50          22000                11000.0
Python 代码 🔒 登录后使用
🔒

登录后即可练习

注册免费账号,在浏览器中直接运行 Python 代码