初级
行业特定风险:制造业存货周转率分析
未完成
初级参考
完整示例代码供参考,建议自己理解后重新输入
"""
金融风险管理 - q073
行业特定风险:制造业存货周转率分析
"""
metadata = {
"id": "q073",
"title": "行业特定风险:制造业存货周转率分析",
"module": "行业特定风险识别",
"difficulty": "beginner",
"data_files": ["operation.csv", "balance_sheet.csv"],
"skills": ["存货周转率", "制造业风险", "行业对标"],
"estimated_minutes": 8
}
"""
【题目】
读取operation.csv和balance_sheet.csv,筛选2023年合并报表制造业(Indnme包含'制造')公司,
分析存货周转情况:
1. 存货周转率 = F060101B(来自operation.csv,存货周转率字段)
2. 存货占总资产比 = 存货/总资产(来自balance_sheet.csv)
3. 输出存货周转率最低(风险最高)的前10家公司
输出DataFrame,包含:Stkcd、ShortName、存货周转率、存货、总资产、存货占总资产比(保留4位小数)
"""
def solve():
import pandas as pd
from pyodide.http import open_url
from io import StringIO
BASE_URL = "https://data.zuihe.com/finance/"
op = pd.read_csv(StringIO(open_url(BASE_URL + "operation.csv").read()))
bs = pd.read_csv(StringIO(open_url(BASE_URL + "balance_sheet.csv").read()))
op23 = op[(op['Accper'] == '2023-12-31') & (op['Typrep'] == 'A')][
['Stkcd', 'F060101B', 'Indnme']].rename(columns={'F060101B': '存货周转率'})
bs23 = bs[(bs['Accper'] == '2023-12-31') & (bs['Typrep'] == 'A')][
['Stkcd', 'ShortName', '存货', '总资产']]
df = op23[op23['Indnme'].str.contains('制造', na=False)].merge(bs23, on='Stkcd')
df = df.dropna(subset=['存货周转率', '存货', '总资产'])
df = df[(df['存货周转率'] > 0) & (df['总资产'] > 0)]
df['存货占总资产比'] = (df['存货'] / df['总资产']).round(4)
df['存货周转率'] = df['存货周转率'].round(4)
result = df.nsmallest(10, '存货周转率')[
['Stkcd', 'ShortName', '存货周转率', '存货', '总资产', '存货占总资产比']
].reset_index(drop=True)
return result.to_string()
if __name__ == "__main__":
print(solve())
示例
输入
solve()
期望输出
Empty DataFrame | Columns: [Stkcd, ShortName, 存货周转率, 存货, 总资产, 存货占总资产比] | Index: []
👑
升级 VIP
解锁全部题目,畅通无阻地学习
- ✓ 解锁全部训练包所有题目
- ✓ 查看完整参考代码和提示
- ✓ 浏览器内直接运行 Python 代码
- ✓ 自动批改 + 进度追踪
30天
¥18
1年
¥99
2年
¥158
3年
¥199