如何用Python Pandas按日期统计数据的最小值、最大值与平均值?
用Pandas按日期聚合统计CSV字段的最小值、最大值和平均值
步骤1:读取并预处理数据
先把CSV里的time字段解析为日期时间类型,再提取纯日期作为分组依据:
import pandas as pd # 读取CSV,自动解析time列为datetime格式 df = pd.read_csv('your_data.csv', parse_dates=['time']) # 提取日期部分(仅保留年月日),生成分组用的date列 df['date'] = df['time'].dt.floor('D')
步骤2:按日期分组聚合统计
通过groupby结合agg方法,对Buf1和Buf2分别计算目标统计值:
# 定义每个字段需要执行的统计函数 agg_rules = { 'Buf1': ['min', 'max', 'mean'], 'Buf2': ['min', 'max', 'mean'] } # 按date分组并完成聚合 daily_stats = df.groupby('date').agg(agg_rules).reset_index() # 整理列名(可选,让结果更直观) daily_stats.columns = ['date', 'Buf1_min', 'Buf1_max', 'Buf1_mean', 'Buf2_min', 'Buf2_max', 'Buf2_mean']
步骤3:数据校验(避免遗漏或错误)
可以通过两种方式验证结果准确性:
- 检查分组后的日期数量是否与原始数据的唯一日期数一致:
original_date_count = df['date'].nunique() result_date_count = daily_stats['date'].nunique() if original_date_count == result_date_count: print("所有日期数据均已统计,无遗漏") else: print(f"数据异常:原始数据有{original_date_count}个日期,结果仅统计{result_date_count}个") - 随机抽取某一天的原始数据,手动计算min/max/mean,和聚合结果对比,确认统计逻辑正确。
最终结果格式示例
聚合后的daily_stats结构如下:
| date | Buf1_min | Buf1_max | Buf1_mean | Buf2_min | Buf2_max | Buf2_mean |
|---|---|---|---|---|---|---|
| 2024-05-01 | 12 | 89 | 45.6 | 5 | 72 | 38.2 |
| 2024-05-02 | 15 | 92 | 47.1 | 7 | 75 | 40.5 |
内容的提问来源于stack exchange,提问作者UwUs
相关产品推荐
相关产品推荐

