初级
闻嗅复核:毛利率计算与异常识别
未完成
初级参考
完整示例代码供参考,建议自己理解后重新输入
"""
金融风险管理 - 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 正常
👑
升级 VIP
解锁全部题目,畅通无阻地学习
- ✓ 解锁全部训练包所有题目
- ✓ 查看完整参考代码和提示
- ✓ 浏览器内直接运行 Python 代码
- ✓ 自动批改 + 进度追踪
30天
¥18
1年
¥99
2年
¥158
3年
¥199