不用手动打开 Excel:用 Python 读取 CSV,几秒钟统计一份销售报表

举报
AiGuoHou 发表于 2026/11/11 10:37:25 2026/11/11
【摘要】 每天面对大量表格数据,是否还在手动复制、计算和汇总?其实,Python 自带的 CSV 模块就能读取表格文件,自动完成数据统计。本文通过一个简单的销售报表示例,教你读取 CSV、计算商品销售额,并快速生成统计结果,无需安装任何第三方库。

CSV 是一种常见的数据交换格式,Excel、数据库和许多网站都支持导入或导出 CSV 文件。如果只是想读取表格、统计数量或计算金额,不一定需要使用复杂的数据分析软件。

今天,我们就用 Python 自带的 csv 模块完成一个实用的小工具。

一、认识 CSV 文件

CSV 是 Comma-Separated Values(逗号分隔值)的缩写。它本质上是一种文本文件,每一行代表一条记录,不同字段通常使用逗号分隔。

例如,一份简单的销售记录:

商品,数量,单价
笔记本,3,12.50
签字笔,5,2.80
文件夹,2,8.00

可以看到,第一行是表头,后面每一行代表一条商品销售记录。

CSV 文件有几个特点:

  • 文件体积通常比较小,方便传输。
  • 可以使用 Excel、WPS 或普通文本编辑器打开。
  • 不依赖特定表格软件,适合不同系统之间交换数据。
  • 可以通过编程自动读取和处理。

需要注意,CSV 并不一定只能使用简单的逗号分隔。字段中如果包含逗号、引号或换行符,也可能需要使用引号进行包装。因此,建议使用专门的 CSV 解析工具,而不是直接用字符串的 split(",") 拆分。

二、准备 Python 程序

首先,在电脑上创建一个文件夹,例如 csv-demo。

在文件夹中创建两个文件:

csv-demo/
├── sales.csv
└── summarize.py

把前面的销售数据保存到 sales.csv 中,注意使用 UTF-8 编码保存。

接下来,打开 summarize.py,开始编写统计程序。

三、使用 DictReader 读取表格

Python 内置了 csv 模块,其中的 DictReader 非常适合初学者。

它能够自动读取 CSV 第一行的字段名称,并把每一行转换成字典。这样,我们就可以直接通过商品名称、数量和单价来获取数据,不必记住每一列的位置。

先看一个简单示例:

import csv

with open("sales.csv", newline="", encoding="utf-8-sig") as file:
    reader = csv.DictReader(file)

    for row in reader:
        print(row["商品"], row["数量"], row["单价"])

运行后,会依次输出:

笔记本 3 12.50
签字笔 5 2.80
文件夹 2 8.00

这里有三个值得注意的地方:

  1. import csv:导入 Python 自带的 CSV 模块。
  2. csv.DictReader(file):读取表格,并将每一行转换为字典。
  3. row["商品"]:通过表头名称获取对应字段。

为什么使用 newline=""?这是 Python 官方推荐的 CSV 文件打开方式,可以避免部分换行符处理问题。

这里还使用了 utf-8-sig 编码,它能够在读取 UTF-8 文件时自动跳过文件开头可能存在的 BOM 标记,减少部分 Excel 导出文件出现表头乱码的问题。

四、实战:自动计算商品销售总额

现在,我们把读取数据和金额计算结合起来,制作一个简单的销售统计程序。

修改 summarize.py,完整代码如下:

import csv
from decimal import Decimal

total = Decimal("0")

with open("sales.csv", newline="", encoding="utf-8-sig") as file:
    reader = csv.DictReader(file)

    for row in reader:
        name = row["商品"]
        quantity = int(row["数量"])
        price = Decimal(row["单价"])

        amount = quantity * price
        total += amount

        print(f"{name}:{amount:.2f} 元")

print("----------------")
print(f"销售总额:{total:.2f} 元")

这段程序主要完成四件事:

  • 读取每一行商品数据。
  • 将数量转换为整数,将单价转换为金额数值。
  • 计算每种商品的销售金额。
  • 累加所有商品金额,输出最终销售总额。

这里特别使用了 Decimal,而不是普通的 float。因为涉及金额计算时,十进制运算通常更适合表示货币数值,可以避免部分二进制浮点数精度问题。

运行程序:

python summarize.py

预期输出:

笔记本:37.50 元
签字笔:14.00 元
文件夹:16.00 元
----------------
销售总额:67.50 元

这样,一份简单的销售报表就自动统计完成了。

五、遇到问题怎么办?

初次处理 CSV 文件时,可能遇到以下几个常见问题:

1. 找不到文件

如果出现 FileNotFoundError,先检查 sales.csv 是否与 Python 程序位于同一目录。如果不在,需要修改文件路径。

2. 找不到字段名称

如果出现 KeyError,检查 CSV 第一行的表头是否与代码中的字段名称完全一致。例如,商品 和 商品名称 就是两个不同的字段。

3. 中文显示乱码

可以检查文件实际使用的编码。如果文件是 UTF-8 编码,可以尝试使用 utf-8-sig;如果来自其他软件,也需要根据实际编码选择相应的读取方式。不要在不了解文件编码的情况下随意切换。

4. 金额计算报错

检查数量和单价是否为空,是否包含非数字字符,以及小数点格式是否正确。真实业务数据通常需要额外进行数据校验,不能假设每一行都完整无误。

六、还能用它做什么?

掌握 CSV 读取之后,你还可以进一步扩展:

  • 统计每个月的支出和收入。
  • 汇总不同商品的销售数量。
  • 计算员工考勤和工作时长。
  • 整理网站导出的用户数据。
  • 批量筛选符合条件的记录。

对于更复杂的数据分析,还可以进一步学习 Pandas。但对于简单的数据读取、统计和转换,Python 自带的 csv 模块已经足够实用。

总结: CSV 是日常工作中非常常见的数据格式,学会使用 Python 的 csv.DictReader 和 Decimal,就能把许多重复的表格统计工作交给程序自动完成,让数据处理变得简单又高效。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。