← 返回题库
初级

资产负债表结构验证

未完成 0%
初级参考 完整示例代码供参考,建议自己理解后重新输入
def solve():
    import pandas as pd
    from pyodide.http import open_url
    from io import StringIO
    
    BASE_URL = "https://data.zuihe.com/finance/"
    
    bs = pd.read_csv(StringIO(open_url(BASE_URL + "balance_sheet.csv").read()))
    info = pd.read_csv(StringIO(open_url(BASE_URL + "company_info.csv").read()))
    
    # 筛选2023年数据
    df_2023 = bs[bs['Accper'] == '2023-12-31'].copy()
    
    # 随机选择3家公司(或选取前3家)
    sample = df_2023.head(3)
    
    # 合并公司信息
    result = sample.merge(info[['stkcd', 'name_tushare']], 
                         left_on='Stkcd', right_on='stkcd', how='left')
    
    output = []
    for _, row in result.iterrows():
        total_assets = row['总资产']
        total_liabilities = row['负债合计']
        equity = row['所有者权益合计']
        
        # 验证恒等式
        diff = abs(total_assets - total_liabilities - equity)
        error_rate = diff / total_assets
        is_valid = error_rate < 0.001
        
        # 计算资产负债率
        debt_ratio = total_liabilities / total_assets
        
        output.append({
            '公司名称': row['name_tushare'] or row['ShortName'],
            '总资产(亿元)': round(total_assets / 1e8, 2),
            '负债(亿元)': round(total_liabilities / 1e8, 2),
            '权益(亿元)': round(equity / 1e8, 2),
            '验证通过': is_valid,
            '资产负债率': round(debt_ratio, 4)
        })
    
    return pd.DataFrame(output)

# 测试输出
if __name__ == "__main__":
    result = solve()
    print(result.to_string(index=False))

示例

输入
solve()
期望输出
公司名称  总资产(亿元)  负债(亿元)  权益(亿元)  验证通过  资产负债率
深物业A   169.88  122.84   47.04  True 0.7231
 深科技   273.83  146.01  127.81  True 0.5332
 大悦城  1980.61 1519.66  460.95  True 0.7673
Python 代码 🔒 登录后使用
🔒

登录后即可练习

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