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

按国家分组将每日数据聚合为周均值数据的解决方案

按国家分组计算周度StringencyIndex均值的解决方案

嘿,这个需求其实用Pandas(Python)或者SQL都能轻松实现,核心就是先按国家分组,再对每个组内的日期做周级聚合计算均值。我给你分两种常用场景详细说:

场景1:用Python Pandas处理本地数据集

假设你的数据已经加载成Pandas DataFrame了,步骤如下:

  1. 先把日期列转换成datetime类型(这是按时间聚合的前提,必须做!)
  2. 按「国家+周」分组,计算StringencyIndex的均值

代码示例

import pandas as pd

# 1. 读取并预处理数据(假设你的数据是CSV格式)
df = pd.read_csv('your_dataset.csv')
df['Date'] = pd.to_datetime(df['Date'])  # 转换日期格式

# 2. 按国家和周分组计算均值(两种方式可选)
# 方式一:用to_period直接生成周标签(默认周日为周结束,可自定义)
weekly_avg = df.groupby(
    ['Country', df['Date'].dt.to_period('W')]  # 改成'W-MON'可将周一设为周结束
)['StringencyIndex'].mean().reset_index()

# 方式二:用ISO年+周数分组(避免跨年周混淆,更严谨)
weekly_avg = df.groupby(
    ['Country', df['Date'].dt.isocalendar().year, df['Date'].dt.isocalendar().week]
)['StringencyIndex'].mean().reset_index()
# 重命名列名更直观
weekly_avg.rename(columns={'year': 'Year', 'week': 'Week'}, inplace=True)

结果说明

拿你给出的Aruba数据举例,2020-01-01到2020-01-06都属于2020年第1周(ISO周规则),计算后的周均值就是0,完全符合预期。

场景2:用SQL处理数据库中的数据

如果你的数据存在数据库(比如PostgreSQL、MySQL)里,直接用SQL分组聚合更高效:

PostgreSQL示例

SELECT
    Country,
    DATE_TRUNC('week', "Date") AS Week_Start_Date,  -- 生成周起始日期
    AVG(StringencyIndex) AS Weekly_Stringency_Index
FROM your_table
GROUP BY Country, DATE_TRUNC('week', "Date")
ORDER BY Country, Week_Start_Date;

MySQL示例

MySQL里用WEEK()函数或者DATE_FORMAT实现:

SELECT
    Country,
    DATE_FORMAT(`Date`, '%Y-%u') AS Year_Week,  -- 格式化为"年-周数"格式
    AVG(StringencyIndex) AS Weekly_Stringency_Index
FROM your_table
GROUP BY Country, Year_Week
ORDER BY Country, Year_Week;

这两种方式都能完美实现你要的「按国家划分的周度StringencyIndex」需求~

内容的提问来源于stack exchange,提问作者laser.p

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 18:12:32