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

基于字典聚合值,查询各地区上午9点湿度(第12列)最大值

解决按州聚合气象数据并查询上午9点相对湿度最大值的问题

嘿,我来帮你搞定这个气象数据处理的需求!我们可以用Python轻松实现按州聚合数据,同时找出每个州上午9点相对湿度的最大值。下面是两种不同场景的实现方案,你可以根据自己的需求选择:

方案一:直接跟踪最大值(高效省内存)

如果你的需求只是获取每个州的最大相对湿度,不需要保留所有原始数据,这个方案更高效,占用内存更少:

import csv

# 初始化字典:键为州名,值为该州上午9点相对湿度的最大值
state_rh_max = {}

# 读取CSV数据文件(替换成你的实际文件名)
with open('weather_data.csv', 'r', newline='', encoding='utf-8') as csvfile:
    csv_reader = csv.reader(csvfile)
    # 跳过表头(如果你的CSV文件没有表头,注释掉这一行)
    next(csv_reader)
    
    for row in csv_reader:
        # 获取州名(第2列,索引从0开始为1)
        state = row[1]
        # 获取上午9点相对湿度(第13列,索引12),转换为浮点数
        try:
            rh_9am = float(row[12])
        except ValueError:
            # 遇到空值或无效数据时跳过该行
            continue
        
        # 更新字典中的最大值:如果州不存在则添加,否则比较后替换更大的值
        if state not in state_rh_max or rh_9am > state_rh_max[state]:
            state_rh_max[state] = rh_9am

# 输出最终结果
print("每个州的上午9点相对湿度最大值:")
for state, max_rh in state_rh_max.items():
    print(f"{state}: {max_rh}%")

代码说明:

  • 用csv.reader逐行读取数据,避免一次性加载大文件到内存
  • 用try-except捕获无效数据,防止程序崩溃
  • 字典state_rh_max动态维护每个州的最大相对湿度,逻辑简单高效

方案二:先聚合所有数据再计算最大值(灵活扩展)

如果你之后还需要对每个州的所有气象数据做更多分析(比如统计最低温、降雨量等),可以先把所有数据按州聚合保存,再计算最大值:

import csv

# 初始化字典:键为州名,值为该州的所有气象记录列表
state_weather_data = {}

with open('weather_data.csv', 'r', newline='', encoding='utf-8') as csvfile:
    csv_reader = csv.reader(csvfile)
    # 读取表头,后续将每行数据转为字典形式,更易理解
    headers = next(csv_reader)
    
    for row in csv_reader:
        state = row[1]
        # 将行数据与表头配对,转为字典,方便后续按字段名访问
        weather_record = dict(zip(headers, row))
        # 把上午9点相对湿度转为浮点数(可选,方便后续计算)
        try:
            weather_record['上午9点相对湿度(%)'] = float(weather_record['上午9点相对湿度(%)'])
        except ValueError:
            pass
        
        # 将记录添加到对应州的列表中
        if state not in state_weather_data:
            state_weather_data[state] = []
        state_weather_data[state].append(weather_record)

# 从聚合的数据中计算每个州的上午9点相对湿度最大值
state_rh_max = {}
for state, records in state_weather_data.items():
    # 过滤出有效的相对湿度数值
    valid_rh_values = [
        rec['上午9点相对湿度(%)'] 
        for rec in records 
        if isinstance(rec['上午9点相对湿度(%)'], float)
    ]
    # 只有存在有效数据时才计算最大值
    if valid_rh_values:
        state_rh_max[state] = max(valid_rh_values)

# 输出结果
print("每个州的上午9点相对湿度最大值:")
for state, max_rh in state_rh_max.items():
    print(f"{state}: {max_rh}%")

代码说明:

  • 先将所有数据按州聚合到字典中,每个州对应一个记录列表
  • 记录以字典形式存储,可读性更强,后续扩展分析更方便
  • 最后从聚合数据中过滤有效数值,计算最大值

内容的提问来源于stack exchange,提问作者D.Ronald

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:07:52