← 返回题库
初级

闻嗅复核:毛利率计算与异常识别

未完成
初级参考 完整示例代码供参考,建议自己理解后重新输入
"""
金融风险管理 - q002
闻嗅复核基础:毛利率计算与异常识别
"""

metadata = {
    "id": "q002",
    "title": "闻嗅复核:毛利率计算与异常识别",
    "module": "闻嗅复核基础技术",
    "difficulty": "beginner",
    "data_files": ["case32_xyz_profit.csv"],
    "skills": ["毛利率计算", "异常识别", "配比原则"],
    "estimated_minutes": 8
}

# 题目描述
"""
【题目】
读取case32_xyz_profit.csv,计算XYZ公司各期毛利率:
毛利率 = (revenue - cost) / revenue

输出DataFrame,包含:period、revenue、cost、毛利率(保留4位小数)

并在最后一列"是否异常"中标记:若毛利率与2017FY毛利率相差超过0.03(3个百分点),标记为"异常",否则为"正常"。
"""

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()))

    df['毛利率'] = ((df['revenue'] - df['cost']) / df['revenue']).round(4)

    base = df[df['period'] == '2017FY']['毛利率'].values[0]
    df['是否异常'] = df['毛利率'].apply(lambda x: '异常' if abs(x - base) > 0.03 else '正常')

    result = df[['period', 'revenue', 'cost', '毛利率', '是否异常']].copy()
    return result.to_string()

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

示例

输入
solve()
期望输出
period    revenue       cost     毛利率 是否异常 | 0  2018H1  120400000  100000000  0.1694   正常 | 1  2018H2  216300000  162000000  0.2510   异常 | 2  2018FY  336700000  262000000  0.2219   异常 | 3  2017FY  240686000  204000000  0.1524   正常
Python 代码 🔒 登录后使用
🔒

登录后即可练习

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