← 返回题库
初级

利润表分析:毛利率趋势与上下半年差异

未完成
初级参考 完整示例代码供参考,建议自己理解后重新输入
"""
金融风险管理 - q014
利润表分析:毛利率趋势与上下半年差异显著性
"""

metadata = {
    "id": "q014",
    "title": "利润表分析:毛利率趋势与上下半年差异",
    "module": "利润表分析与异常识别",
    "difficulty": "beginner",
    "data_files": ["case32_xyz_profit.csv"],
    "skills": ["毛利率趋势", "半年对比", "差异识别"],
    "estimated_minutes": 10
}

# 题目描述
"""
【题目】
读取case32_xyz_profit.csv,分析XYZ公司毛利率趋势,重点关注上下半年差异:

计算各期毛利率(2018H1、2018H2推算、2018FY、2017FY),其中:
- 2018H2收入 = 2018FY - 2018H1,成本同理
- 毛利率 = (revenue - cost) / revenue,保留4位小数

输出DataFrame,index为['2017FY', '2018H1', '2018H2', '2018FY'],
包含:revenue、cost、毛利率

最后一行输出"H2-H1毛利率差"(绝对差值,保留4位小数)
"""

def solve():
    import pandas as pd
    from pyodide.http import open_url
    from io import StringIO

    BASE_URL = "https://data.zuihe.com/finance/"
    df = pd.read_csv(StringIO(open_url(BASE_URL + "case32_xyz_profit.csv").read()))

    fy17 = df[df['period'] == '2017FY'].iloc[0]
    h1 = df[df['period'] == '2018H1'].iloc[0]
    fy18 = df[df['period'] == '2018FY'].iloc[0]

    h2_rev = fy18['revenue'] - h1['revenue']
    h2_cost = fy18['cost'] - h1['cost']

    periods = {
        '2017FY': (fy17['revenue'], fy17['cost']),
        '2018H1': (h1['revenue'], h1['cost']),
        '2018H2': (h2_rev, h2_cost),
        '2018FY': (fy18['revenue'], fy18['cost']),
    }

    rows = []
    for p, (rev, cost) in periods.items():
        gm = round((rev - cost) / rev, 4)
        rows.append({'period': p, 'revenue': rev, 'cost': cost, '毛利率': gm})

    result = pd.DataFrame(rows).set_index('period')
    diff = round(result.loc['2018H2', '毛利率'] - result.loc['2018H1', '毛利率'], 4)
    result.loc['H2-H1毛利率差', :] = ['', '', diff]

    return result.to_string()

if __name__ == "__main__":
    print(solve())

示例

输入
solve()
期望输出
revenue         cost     毛利率 | period                                      | 2017FY     240686000.0  204000000.0  0.1524 | 2018H1     120400000.0  100000000.0  0.1694 | 2018H2     216300000.0  162000000.0  0.2510 | 2018FY     336700000.0  262000000.0  0.2219 | H2-H1毛利率差                            0.0816
Python 代码 🔒 登录后使用
🔒

登录后即可练习

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