
本文介绍如何使用pandas读取气象csv数据,提取rh(相对湿度)列,安全剔除缺失值后计算其全局平均值,并给出可直接运行的代码及关键注意事项。
本文介绍如何使用pandas读取气象csv数据,提取rh(相对湿度)列,安全剔除缺失值后计算其全局平均值,并给出可直接运行的代码及关键注意事项。
在处理实测气象时间序列数据时,缺失值(NaN)是常见问题。以芬兰Jyväskylä站点的小时级观测CSV文件为例,其中RH列代表相对湿度(Relative Humidity),目标是计算该列在整个时间跨度内的算术平均值,且严格排除所有NaN项——这等价于对非空观测值求均值,而非用零或插值填充后计算。
实现步骤简洁明确:
- 加载数据:使用 pandas.read_csv() 读入CSV文件;
- 提取并清洗:通过 df['RH'] 获取Series,再调用 .dropna() 移除所有NaN,返回仅含有效数值的新Series;
- 计算均值:对清洗后的Series直接调用 .mean(),pandas默认跳过NaN(即使未显式dropna亦可,但显式清洗更清晰、可控)。
以下是完整、健壮的示例代码:
import pandas as pd # 替换为你的实际文件路径(如 'jyvaskyla_weather_2023.csv') file_path = '[CSV_NAME]' # ← 此处需替换为真实文件名,如 'weather_data.csv' # 读取数据 df = pd.read_csv(file_path) # 提取RH列,删除NaN,计算平均值(结果为float) average_rh = df['RH'].dropna().mean() # 输出结果(题目要求:数字-only) print(average_rh)
⚠️ 关键注意事项:
- [CSV_NAME] 并非变量或语法,而是题干中对待分析CSV文件名的占位符,实际使用时必须替换为真实路径(如 'data.csv' 或 './raw/jyvaskyla_2020-2023.csv');
- 若RH列不存在,代码将抛出 KeyError;建议添加存在性检查:if 'RH' not in df.columns: raise ValueError("Column 'RH' not found");
- .mean() 对空Series返回 nan,因此若数据中RH全为NaN,结果将为nan——可根据业务需求追加判断(如 if pd.isna(average_rh): print("No valid RH data"));
- 本方法计算的是简单算术平均,不涉及时间加权;若需按小时权重(如不同月份天数差异)计算加权平均,需额外构造权重列。
最终输出仅为一个浮点数,符合题目“number only”的严格要求。










