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

Python实现从CSV提取数据并计算2016年各地点平均降雪量写入新CSV

嘿,我来帮你搞定这个问题!你遇到的麻烦大概率是因为边读边写的同时没做好数据分组统计——毕竟要先把2016年所有地点的降雪数据都收集齐,才能算出准确的平均值,而不是读一行就处理一行。下面我给你两种可靠的解决方案,你可以根据自己的习惯选择:

方法一:用Python标准库csv实现(适合基础场景)

这种方法不需要额外安装库,逻辑清晰,适合新手理解:

import csv
from collections import defaultdict

# 第一步:先收集2016年所有地点的降雪数据
location_snow_data = defaultdict(list)

# 先单独读取原始数据,按地点分组存储降雪量
with open('filteredData.csv', 'r', newline='', encoding='utf-8') as input_file:
    reader = csv.DictReader(input_file)
    for row in reader:
        # 注意:这里的列名要和你的CSV文件实际列名一致,比如"年份""地点""降雪量"
        if row['年份'] == '2016':
            try:
                # 把降雪量转成数字,避免非数值数据干扰
                snowfall = float(row['降雪量'])
                location = row['地点']
                location_snow_data[location].append(snowfall)
            except ValueError:
                # 遇到无效数据时跳过并提示,避免程序崩溃
                print(f"跳过无效数据行:{row}")

# 第二步:计算每个地点的平均降雪量
average_results = {}
for location, snow_values in location_snow_data.items():
    if snow_values:  # 确保该地点有有效数据才计算
        average = sum(snow_values) / len(snow_values)
        average_results[location] = round(average, 2)  # 保留两位小数,可按需调整

# 第三步:把结果写入新文件
with open('average2016.csv', 'w', newline='', encoding='utf-8') as output_file:
    writer = csv.DictWriter(output_file, fieldnames=['地点', '2016年平均降雪量'])
    writer.writeheader()  # 写入表头
    for location, avg_snow in average_results.items():
        writer.writerow({'地点': location, '2016年平均降雪量': avg_snow})

方法二:用pandas实现(简洁高效,适合数据量较大的场景)

如果你已经安装了pandas,几行代码就能搞定,非常省心:

import pandas as pd

# 读取原始数据并筛选2016年的记录
df = pd.read_csv('filteredData.csv')
df_2016 = df[df['年份'] == 2016]

# 按地点分组计算平均降雪量,重置索引并修改列名
average_df = df_2016.groupby('地点')['降雪量'].mean().round(2).reset_index()
average_df.columns = ['地点', '2016年平均降雪量']

# 写入结果到新CSV,不保留索引列
average_df.to_csv('average2016.csv', index=False, encoding='utf-8')

你原来的做法可能踩的坑:

  • 边读原始文件边写结果文件,导致某个地点的后续数据还没读到就提前写入了错误的平均值;
  • 没有对数据做分组存储,每遇到一个地点就直接计算,但忽略了后续同地点的降雪数据;
  • 没处理非数字的降雪量数据,导致计算时出现报错。

记得根据你CSV文件里的实际列名,修改代码中的年份、地点、降雪量这些字段名哦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:25:41