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

如何按规则填充2008美国大选民意调查数据集的缺失日期?

QSS第四章习题:2008大选民调数据处理(双层循环实现)

问题背景

需要处理2008年美国大选民调数据,要求每个州在竞选最后90天内,每日计算最近一次(或当日)民调的平均获胜率,当日多份民调取平均值。原代码仅实现了有民调日期的分组平均,无法覆盖无民调日期的最近值填充,需用双层循环(外层90天迭代,内层51个州迭代)完成。

修正后的完整代码

import pandas as pd

# 读取数据集
polls08 = pd.read_csv('polls08.csv')

# 定义选举日(2008年美国大选日期)
election_day = pd.to_datetime('2008-11-04')

# 计算每份民调距离选举日的天数
polls08['middate'] = pd.to_datetime(polls08['middate'])
polls08['days_to_election'] = (election_day - polls08['middate']).dt.days

# 计算奥巴马相对麦凯恩的领先率
polls08['avg_margin_of_victory'] = polls08['Obama'] - polls08['McCain']

# 筛选选举前90天内的民调(含选举当日)
filtered_df = polls08[polls08['days_to_election'] <= 90].copy()

# 获取所有州的唯一列表(50州+华盛顿特区)
states = filtered_df['state'].unique()
# 遍历选举前90天(距离选举日0到89天,共90天)
days_range = range(0, 90)

# 初始化结果存储列表
results = []

# 双层循环:外层遍历每日,内层遍历每个州
for days_left in days_range:
    for state in states:
        # 筛选该州中,距离选举日天数不超过当前天数的所有民调(即最新的民调范围)
        state_polls = filtered_df[(filtered_df['state'] == state) & (filtered_df['days_to_election'] <= days_left)]
        
        if not state_polls.empty:
            # 找到该州最近的民调日期(即最大的days_to_election值,对应最接近目标日期的民调)
            latest_poll_day = state_polls['days_to_election'].max()
            # 提取该日期的所有民调,计算平均领先率
            latest_polls = state_polls[state_polls['days_to_election'] == latest_poll_day]
            avg_margin = latest_polls['avg_margin_of_victory'].mean()
        else:
            # 若该州90天内无民调,用缺失值填充
            avg_margin = pd.NA
        
        # 将结果存入列表
        results.append({
            'days_to_election': days_left,
            'state': state,
            'avg_margin_of_victory': avg_margin
        })

# 转换为最终DataFrame
final_result = pd.DataFrame(results)

代码说明

  1. 修正原代码问题:补充了未定义的选举日变量,调整了民调时间范围的筛选逻辑。
  2. 双层循环逻辑:
    • 外层循环覆盖选举前90天的每一天(days_left为距离选举日的剩余天数)。
    • 内层循环遍历每个州,针对每个州的目标日期,筛选出所有不晚于该日期的民调,找到其中最新的一批(同一日期的所有民调)并计算平均领先率。
  3. 缺失值处理:若某州在90天内无任何民调,用pd.NA标记缺失值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 23:22:02