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

如何用原生Python快速计算按年份分组的销售数据平均值?

按年份分组计算平均销售额的原生Python实现

核心思路

利用Python内置的字典结构完成年份自动分组,无需为每个年份单独编写判断逻辑,仅使用基础语法即可实现,不需要引入任何第三方库。

基础实现(无额外导入,适合初学者)

# 初始化字典,key为年份,value为对应年份的销售额列表
year_sales = {}

# 假设year_value是读取文件得到的每行内容的迭代器
for line in year_value:
    # 跳过空行,避免文件有空白行导致报错
    line = line.strip()
    if not line:
        continue
    year, sale = line.split(":")
    sale = float(sale)
    # 年份不存在时先初始化对应空列表
    if year not in year_sales:
        year_sales[year] = []
    year_sales[year].append(sale)

# 遍历分组结果计算并打印平均值
for year, sales in year_sales.items():
    avg = sum(sales) / len(sales)
    # 可根据需求调整小数保留位数,示例保留2位
    print(f"The average sales in {year} were : {avg:.2f}")

代码说明

  • 字典year_sales会自动存储所有出现过的年份,不管是20个还是更多年份都不需要修改代码逻辑
  • 所有数据遍历完成后统一计算平均值,比每次新增数据就计算一次的效率更高
  • 加入了空行判断,兼容存在格式瑕疵的输入文件

更简洁的标准库实现(无需第三方库)

如果可以使用Python标准库的collections.defaultdict,可以省略判断年份是否存在的步骤,代码更简洁:

from collections import defaultdict

# 初始化默认value为列表类型的字典
year_sales = defaultdict(list)

for line in year_value:
    line = line.strip()
    if not line:
        continue
    year, sale = line.split(":")
    year_sales[year].append(float(sale))

for year, sales in year_sales.items():
    avg = sum(sales) / len(sales)
    print(f"The average sales in {year} were : {avg:.2f}")

补充:文件读取示例

如果你需要直接从文本文件读取数据,可以用以下代码获取year_value:

# 将sales.txt替换为你的实际文件路径
with open("sales.txt", "r", encoding="utf-8") as f:
    year_value = f.readlines()
# 后面接上面的分组计算逻辑即可

内容的提问来源于stack exchange,提问作者Moss

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 10:15:02