如何用Python按日期分组计算DataFrame中温度列的均值/中位数?
按日期分组计算温度均值与中位数的解决方案
前提准备
确保已导入所需库:
import pandas as pd import numpy as np
步骤1:标准化日期列格式
如果日期列是字符串类型,先转换为datetime格式,否则无法按日期正确分组:
# 假设DataFrame名为df,日期列名为"测量日期",温度列名为"温度" df["测量日期"] = pd.to_datetime(df["测量日期"])
步骤2:按日期分组并计算统计量
两种常用分组方式任选其一:
方式一:提取纯日期对象分组
分组后索引为date类型的日期值:daily_stats = df.groupby(df["测量日期"].dt.date)["温度"].agg(["mean", "median"])方式二:保留datetime格式的日期分组
将时间戳向下取整到当天,索引仍为datetime类型,方便后续时间操作:daily_stats = df.groupby(df["测量日期"].dt.floor("D"))["温度"].agg(["mean", "median"])
步骤3:整理输出结果
把日期从索引转为普通列,并修改列名让结果更直观:
daily_stats = daily_stats.reset_index() daily_stats.columns = ["测量日期", "日均温度", "温度中位数"] # 打印结果或导出为文件 print(daily_stats) # 导出为CSV:daily_stats.to_csv("每日温度统计.csv", index=False)
模拟测试示例
若无真实数据,可生成7天每分钟的模拟数据集验证:
# 生成时间范围:2024-01-01 00:00到2024-01-07 23:59,每分钟一条 date_range = pd.date_range(start="2024-01-01", end="2024-01-07 23:59", freq="T") # 生成15-30℃的随机温度数据 df = pd.DataFrame({ "测量日期": date_range, "温度": np.random.randint(15, 31, size=len(date_range)) })
内容的提问来源于stack exchange,提问作者sunter
相关产品推荐
相关产品推荐

