You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

不用pandas用csv.DictReader读CSV算总销售额报TypeError如何解决?

错误原因
  1. 原代码未导入csv模块,调用csv.DictReader时会首先触发模块未找到错误
  2. 循环中每次都将sales变量覆盖为当前行的单个浮点型销售额数值,循环结束后sales仅为最后一行的销售额数值,是不可迭代的float类型,sum()函数要求传入可迭代对象(如列表、元组),因此触发TypeError
  3. 原逻辑未做利润字段的统计,不满足需求要求的输出指标
修复后可运行的完整代码
import csv

path = "Superstore.csv"
# 初始化累加变量
total_sales = 0.0
total_profit = 0.0

with open(path, "r", encoding="utf-8") as store_data:
    reader = csv.DictReader(store_data)
    for row in reader:
        # 累加销售额,默认值0避免字段缺失报错
        total_sales += float(row.get("Sales", 0))
        # 累加利润
        total_profit += float(row.get("Profit", 0))

# 输出统计报告
print("=== 销售数据统计报告 ===")
print(f"总销售额:{total_sales:.2f}")
print(f"总利润:{total_profit:.2f}")
代码说明
  • 采用直接累加的方式计算总数值,不需要额外存储所有行的数值,内存占用更低
  • 为dict.get()方法设置默认值0,避免CSV文件某行缺少对应字段时触发转换报错
  • 输出时保留2位小数,符合金额类统计的展示习惯

内容的提问来源于stack exchange,提问作者Tong Wei Jun

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 13:57:03