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

如何用Python标准库计算CSV指定列的平均面积(含特殊场景处理)

解决方案

这里是完整的实现代码,解决你提到的所有问题:

import csv

def get_av_area(filename, column_name):
    total_area = 0.0
    count = 0

    with open(filename, 'r') as csvfile:
        reader = csv.DictReader(csvfile)
        for row in reader:
            # 获取当前行的面积值,默认空字符串
            area_str = row.get(column_name, '')
            # 处理空值或#empty的情况
            if area_str.strip() == '' or area_str == '#empty':
                area = 0.0
            else:
                # 转换为float类型,同时捕获转换异常
                try:
                    area = float(area_str)
                except ValueError:
                    # 遇到非数字的无效值也视为0
                    area = 0.0
            total_area += area
            count += 1

    # 避免无数据时除以0,返回0.0
    return total_area / count if count > 0 else 0.0

针对问题的具体处理说明:

  • 列名访问:csv.DictReader会把每行数据转为字典,直接用row.get(column_name, '')就能通过列名取值,不管列名是否带特殊字符都能正常工作,get方法还能处理列名不存在的情况,返回默认空字符串。
  • 标准库限制:全程仅使用Python自带的csv模块,无第三方依赖。
  • 字符串转float:对有效数据用float()转换,同时通过try-except捕获转换失败的异常(比如遇到非数字的无效值),避免程序崩溃。
  • 空值处理:判断单元格为空字符串、#empty,或是带空格的空内容时,统一视为0.0计算。

调用示例:

average_area = get_av_area('land_info.csv', 'farm_area')
print(f"农场平均面积:{average_area}")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 14:25:18