You need to enable JavaScript to run this app. Python Pandas按周/月聚合表内新冠疫情统计数据方法咨询
优惠活动
大模型
产品
解决方案
定价
更多

Python Pandas按周/月聚合表内新冠疫情统计数据方法咨询

Pandas 处理美国新冠统计数据集实现方案

1. 前置数据预处理

首先需要将字符串格式的日期字段转换为Pandas可识别的时间类型,同时可以提前筛选出阳性结果子集方便后续查询:

import pandas as pd

# 读取原始数据集,替换为你实际的文件路径
df = pd.read_csv("covid_daily_stats.csv")

# 转换日期字段为datetime类型,后续时间聚合的必备前提
# 按你实际的日期格式调整format参数,常见格式为%Y-%m-%d
df['date'] = pd.to_datetime(df['date'], format='%Y-%m-%d')

注意:如果你的数据集里overall_outcome字段的阳性标识不是Positive,请替换为实际对应的值,否则筛选结果会为空。

2. 按州维度聚合每日新增结果总和

按州+日期分组直接聚合即可:

# 聚合所有结果类型的每日各州新增总数
daily_state_all = df.groupby(
    ['state_name', 'date'], 
    as_index=False
)['new_results_reported'].sum()

# 如果只需要聚合阳性结果,用下面的代码即可
daily_state_positive = df[df['overall_outcome'] == 'Positive'].groupby(
    ['state_name', 'date'], 
    as_index=False
)['new_results_reported'].sum()

3. 可切换周/月维度的聚合通用函数

封装通用函数支持灵活调整时间维度、筛选指定州和结果类型:

def agg_by_time_dimension(df, time_dim='M', state=None, outcome_type=None):
    """
    按指定时间维度聚合数据
    参数说明:
    - df: 输入数据集
    - time_dim: 时间维度,可选 'W'(按周)、'M'(按月)、'Q'(按季度),符合Pandas offset规范即可
    - state: 可选参数,指定要查询的州名,例如'Alabama',不传则返回所有州聚合结果
    - outcome_type: 可选参数,指定结果类型,例如'Positive',不传则返回所有类型聚合结果
    """
    filtered_df = df.copy()
    # 按指定条件筛选数据
    if state:
        filtered_df = filtered_df[filtered_df['state_name'] == state]
    if outcome_type:
        filtered_df = filtered_df[filtered_df['overall_outcome'] == outcome_type]
    
    # 按时间维度+州分组聚合
    agg_result = filtered_df.groupby(
        [pd.Grouper(key='date', freq=time_dim), 'state_name'],
        as_index=False
    )['new_results_reported'].sum()
    
    # 格式化时间周期字段方便查看
    if time_dim == 'M':
        agg_result['period'] = agg_result['date'].dt.strftime('%Y-%m')
    elif time_dim == 'W':
        agg_result['period'] = agg_result['date'].dt.strftime('%Y-%m-%d') + ' 起一周'
    return agg_result

4. 需求示例:查询阿拉巴马州单月全部阳性结果统计

直接调用上述封装函数即可实现需求:

# 聚合阿拉巴马州按月统计的所有阳性结果
alabama_monthly_positive = agg_by_time_dimension(
    df,
    time_dim='M',
    state='Alabama',
    outcome_type='Positive'
)

# 如需查询某一具体月份的结果,比如2020年4月,再加一层筛选即可
alabama_202004_positive = alabama_monthly_positive[alabama_monthly_positive['period'] == '2020-04']

内容的提问来源于stack exchange,提问作者Work_fl0w

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 05:15:03