← 返回题库
初级

统计账户充值流水分析

未完成
初级参考 完整示例代码供参考,建议自己理解后重新输入
def solve():
    from pyodide.http import open_url
    from io import StringIO
    import pandas as pd
    accts=pd.read_csv(StringIO(open_url("https://data.zuihe.com/dbd/ms-mealhub/state_05/meal_accounts.csv").read()))
    recharge=accts[accts['type']=='recharge'].groupby('employee_id')['amount'].sum().reset_index(name='recharged')
    consume=accts[accts['type']=='consume'].groupby('employee_id')['amount'].sum().reset_index(name='consumed')
    latest_bal=accts.groupby('employee_id')['balance_after'].last().reset_index(name='balance')
    summary=recharge.merge(consume,on='employee_id',how='outer').merge(latest_bal,on='employee_id',how='outer').fillna(0)
    print(f"Account stats:")
    print(f"  Total accounts: {len(summary)}")
    print(f"  Total balance: {round(summary['balance'].sum(),2)}")
    print(f"  Total recharged: {round(summary['recharged'].sum(),2)}")
    print(f"  Total consumed: {round(summary['consumed'].sum(),2)}")
    print(f"  Avg recharge: {round(summary['recharged'].mean(),2)}")
    print("  Top recharged accounts:")
    for _,r in summary.nlargest(5,'recharged').iterrows():
        print(f"    {r['employee_id']}: recharged={round(r['recharged'],2)} consumed={round(r['consumed'],2)} balance={round(r['balance'],2)}")

示例

输入
solve()
期望输出
Account stats:
  Total accounts: 80
  Total balance: 20131.77
  Total recharged: 43900.0
  Total consumed: 0.0
  Avg recharge: 548.75
  Top recharged accounts:
    EMP-0005: recharged=1300.0 consumed=0.0 balance=18.21
    EMP-0010: recharged=1300.0 consumed=0.0 balance=253.36
    EMP-0060: recharged=1300.0 consumed=0.0 balance=66.22
    EMP-0048: recharged=1200.0 consumed=0.0 balance=177.71
    EMP-0042: recharged=1100.0 consumed=0.0 balance=345.78
Python 代码 🔒 登录后使用
🔒

登录后即可练习

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