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