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

程序无法在CSV数据集定位Orange县数据,绘制新冠病例图报错

解决Pandas KeyError: 'Orange'问题(橙县新冠数据无法定位)

报错信息

Traceback (most recent call last):

  File ~\anaconda3\lib\site-packages\pandas\core\indexes\base.py:3621 in get_loc
    return self._engine.get_loc(casted_key)

  File pandas\_libs\index.pyx:136 in pandas._libs.index.IndexEngine.get_loc

  File pandas\_libs\index.pyx:163 in pandas._libs.index.IndexEngine.get_loc

  File pandas\_libs\hashtable_class_helper.pxi:5198 in pandas._libs.hashtable.PyObjectHashTable.get_item

  File pandas\_libs\hashtable_class_helper.pxi:5206 in pandas._libs.hashtable.PyObjectHashTable.get_item

KeyError: 'Orange'


The above exception was the direct cause of the following exception:

Traceback (most recent call last):

  File ~\OneDrive\Desktop\CSC 314\untitled0.py:48 in <module>
    df.loc["Orange"]

  File ~\anaconda3\lib\site-packages\pandas\core\indexing.py:967 in __getitem__
    return self._getitem_axis(maybe_callable, axis=axis)

  File ~\anaconda3\lib\site-packages\pandas\core\indexing.py:1202 in _getitem_axis
    return self._get_label(key, axis=axis)

  File ~\anaconda3\lib\site-packages\pandas\core\indexing.py:1153 in _get_label
    return self.obj.xs(label, axis=axis)

  File ~\anaconda3\lib\site-packages\pandas\core\generic.py:3864 in xs
    loc = index.get_loc(key)

  File ~\anaconda3\lib\site-packages\pandas\core\indexes\base.py:3623 in get_loc
    raise KeyError(key) from err

KeyError: 'Orange'

问题原因

  1. 数据处理顺序错误:先将全量数据集的County设为索引,再筛选加州数据,导致索引中包含大量非加州县,后续合并时易丢失目标数据。
  2. 合并匹配风险:california_county_stats.txt的索引若未与新冠数据中的加州县名完全匹配(比如大小写、空格差异),会直接剔除橙县数据。
  3. 冗余代码触发错误:单独的df.loc["Orange"]行无实际作用,却提前暴露了数据缺失问题。

修复方案

  1. 调整处理顺序:先筛选加州数据,再设置County为索引,避免索引混入无关县名。
  2. 规范stats文件读取:明确指定其索引为县名列,确保与新冠数据的县名匹配。
  3. 新增数据验证:合并后检查橙县是否存在,避免直接报错。
  4. 优化数据提取逻辑,移除冗余代码。

修正后的完整代码

import pandas as pd
import matplotlib.pyplot as plt
from datetime import datetime

# 从GitHub获取新冠死亡数据
covid_url  = "https://github.com/CSSEGISandData/COVID-19/raw/master/csse_covid_19_data/csse_covid_19_time_series/"
covid_file = "time_series_covid19_deaths_US.csv"
covid = pd.read_csv(covid_url + covid_file, delimiter=",")

# 数据清洗:重命名列、删除无用字段
covid = covid.rename(columns={"Admin2":"County", "Province_State":"State"})
unused_columns = ["UID", "iso2", "iso3", "code3", "FIPS", "Long_", "Lat", "Country_Region", "Combined_Key"]
covid = covid.drop(columns=unused_columns)

# 计算每日新增死亡数(从后往前减,避免覆盖原始数据)
col_a = covid.columns.get_loc("1/22/20")  # 第一个日期列的索引
col_z = covid.shape[1]-1                  # 最后一列的索引
for c in range(col_z, col_a, -1):
     covid.iloc[:, c] = covid.iloc[:,c] - covid.iloc[:,c-1]

# 读取加州县统计数据,指定第一列为索引
stats = pd.read_csv("california_county_stats.txt", delimiter=",", index_col=0)

# 先筛选加州数据,再设置索引(关键修复)
covid_ca = covid[covid["State"] == "California"].drop(columns=['State'])
covid_ca = covid_ca.set_index("County")

# 合并两个数据集
df = pd.merge(stats, covid_ca, left_index=True, right_index=True)

# 验证橙县是否存在
if "Orange" not in df.index:
    print("警告:数据集中未找到橙县数据,请检查stats文件或covid数据的县名匹配")
    print("可用县名:", df.index.tolist())
else:
    # 提取橙县的日期和新增数据
    first_col = df.columns.get_loc("1/22/20")
    last_col = df.shape[1]-1
    orange_data = df.loc["Orange", first_col:last_col]
    y_vals = orange_data.values
    x_vals = [datetime.strptime(day, '%m/%d/%y') for day in orange_data.index]

    # 绘制每日新增死亡数柱状图
    plt.figure(figsize=(10,5))
    plt.gca().yaxis.grid()
    plt.bar(x_vals, y_vals, width=1, color="orangered")
    plt.title("橙县每日新增COVID-19死亡数", fontsize=14, pad=15)
    plt.show()

    # 计算7日滚动平均值并绘图
    orange_avg = orange_data.rolling(7).mean()

    plt.figure(figsize=(10,5))
    plt.gca().yaxis.grid()
    plt.plot(x_vals, orange_avg, "-", color="orangered")
    plt.fill_between(x_vals, orange_avg, color="orangered", alpha=0.4)
    plt.title("橙县每日新增COVID-19死亡数(7日滚动平均)", fontsize=14, pad=15)
    plt.show()

额外提示

  • 若仍报错,检查california_county_stats.txt的第一列是否为县名,且橙县名称为Orange(无大小写错误、无额外空格)。
  • 可在合并后添加print(df.index)查看所有可用县名,确认橙县是否存在。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 15:25:20