Excel统计温度低于-15℃的独立天数(每日48条半小时数据)
统计温度低于-15℃的天数(单日多次记录仅计1天)
嘿,这个需求我之前处理过类似的,核心就是把同一天内的多次低温记录合并成一天统计,不用纠结当天到底触发了多少次。下面给你拆解具体思路,附示例数据和常用的实现方式:
核心解决步骤
- 提取日期维度:从每条记录的时间戳里单独拆分出日期部分(比如把
2024-01-01 00:30:00转换成2024-01-01),这是按天分组的基础。 - 分组筛选验证:对每个日期组,检查该组内是否存在至少一条温度≤-15℃的记录。只要有一条满足,这个日期就算入统计。
- 统计符合条件的日期数:把所有满足“当日有低温记录”的日期数量加总,就是最终结果。
示例数据
假设我们有如下每半小时采集的温度数据:
timestamp,temperature 2024-01-01 00:00:00,-14.2 2024-01-01 00:30:00,-15.1 2024-01-01 01:00:00,-16.3 2024-01-02 00:00:00,-13.8 2024-01-02 00:30:00,-14.5 2024-01-03 02:00:00,-15.5 2024-01-03 02:30:00,-14.9
在这个例子里,1月1日和1月3日都出现了低于-15℃的记录,所以最终统计结果是2天。
常用实现方式
方式1:Python + Pandas(适合本地数据处理)
Pandas对时间序列数据的处理非常便捷,代码逻辑清晰:
import pandas as pd # 加载数据(实际场景可从CSV/Excel读取) temp_data = pd.DataFrame({ 'timestamp': ['2024-01-01 00:00:00', '2024-01-01 00:30:00', '2024-01-01 01:00:00', '2024-01-02 00:00:00', '2024-01-02 00:30:00', '2024-01-03 02:00:00', '2024-01-03 02:30:00'], 'temperature': [-14.2, -15.1, -16.3, -13.8, -14.5, -15.5, -14.9] }) # 转换时间格式并提取日期 temp_data['date'] = pd.to_datetime(temp_data['timestamp']).dt.date # 按日期分组,检查每组是否有低温记录,统计符合条件的天数 cold_day_count = temp_data.groupby('date')['temperature'].apply(lambda x: any(x <= -15)).sum() print(f"温度低于-15℃的天数:{cold_day_count}") # 输出结果:温度低于-15℃的天数:2
方式2:SQL(适合数据库存储的数据)
如果数据存在数据库中,直接用SQL查询更高效:
SELECT COUNT(DISTINCT DATE(timestamp)) AS cold_days FROM temperature_records WHERE temperature <= -15;
这里DATE(timestamp)用于提取日期部分,DISTINCT会自动去重同一天的多条记录,直接统计出符合条件的日期总数。
内容的提问来源于stack exchange,提问作者Mattias
相关产品推荐
相关产品推荐

