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

求取CSV文件数据最大值与最小值,无法定位操作错误求助

核心错误原因

绝大多数此类问题都是读取数据时没有将Life expectancy (years)列转换为数值类型,直接使用字符串比较得出了错误结果。

排查要点

  • 检查CSV读取编码是否正确,中文内容如果使用默认编码读取会出现乱码,需指定encoding='utf-8'
  • 检查目标列是否存在空值,空值会导致最值计算异常,可以先删除空值行再计算
  • 确认目标列的数据类型为数值型(整数/浮点数),如果是字符串类型需要先做类型转换

实现方案

方案1:使用pandas处理(推荐)

首先安装依赖:
pip install pandas
执行代码:

import pandas as pd

# 读取CSV文件,替换为你自己的文件路径
df = pd.read_csv('life_expectancy.csv', encoding='utf-8')

# 可选:删除目标列为空的行
df = df.dropna(subset=['Life expectancy (years)'])

# 计算全表预期寿命的最值
max_life = df['Life expectancy (years)'].max()
min_life = df['Life expectancy (years)'].min()

# 如需查看最值对应的完整数据行
max_row = df[df['Life expectancy (years)'] == max_life]
min_row = df[df['Life expectancy (years)'] == min_life]

# 如需按国家分组计算每个国家的预期寿命最值
grouped_res = df.groupby('Entity')['Life expectancy (years)'].agg(['max', 'min']).reset_index()

print(f"全表预期寿命最大值:{max_life}")
print(f"最大值对应数据行:\n{max_row.to_string(index=False)}")
print(f"全表预期寿命最小值:{min_life}")
print(f"最小值对应数据行:\n{min_row.to_string(index=False)}")
print(f"各国预期寿命最值统计:\n{grouped_res.to_string(index=False)}")

你给出的示例数据运行后,输出的阿富汗段结果为最大值41.32,最小值27.638,和实际数据一致。

方案2:纯Python内置库实现(无需安装第三方依赖)

import csv

life_values = []
full_rows = []
with open('life_expectancy.csv', 'r', encoding='utf-8') as f:
    reader = csv.DictReader(f)
    for row in reader:
        # 转换为浮点数再参与计算,避免字符串比较错误
        life_val = float(row['Life expectancy (years)'])
        life_values.append(life_val)
        full_rows.append(row)

max_life = max(life_values)
min_life = min(life_values)
max_row = full_rows[life_values.index(max_life)]
min_row = full_rows[life_values.index(min_life)]

print(f"全表预期寿命最大值:{max_life}")
print(f"最大值对应数据行:{max_row}")
print(f"全表预期寿命最小值:{min_life}")
print(f"最小值对应数据行:{min_row}")

内容的提问来源于stack exchange,提问作者1onic 1nferno

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 04:54:01