运行印度新冠传播预测代码时出现KeyError: 'Date'报错如何解决
Key Error: 'Date'报错成因 - 核心原因:你在绘制条形图的代码段中,执行了
data = data[['State/UnionTerritory', 'Confirmed','Cured','Deaths']]操作,这行代码直接过滤保留了4个字段,将原数据集中的Date列从data变量中完全移除,后续再访问data['Date']自然找不到对应字段触发报错。 - 其他可能原因:原始数据集的日期列名和你写的
Date不匹配,可能存在大小写差异(如date)、前后空格(如Date/Date)、拼写偏差,也会触发该报错。 - 额外隐藏问题:你导入依赖时写的
import calendra为拼写错误,正确拼写是import calendar,后续运行也会触发模块找不到报错。
解决方法
- 调整代码执行顺序,把日期格式处理的逻辑提前到读取、清洗数据之后,绘图操作之前,避免中间操作误删字段
- 绘图筛选列时不要直接覆盖原data变量,单独生成绘图用的临时数据集,保留原数据的完整字段给后续时序预测使用
- 读取数据后先打印列名确认字段是否正确,避免列名匹配错误
修正后可运行的代码片段
import pandas as pd import numpy as np from datetime import datetime from datetime import date import calendar # 修正拼写错误 import matplotlib.pyplot as plt %matplotlib inline import seaborn as sns import plotly import plotly.express as px import plotly.graph_objects as go import cufflinks as cf import plotly.offline as pyo from plotly.offline import init_notebook_mode,plot,iplot import folium from folium import plugins plt.rcParams['figure.figsize'] = 10,12 import warnings warnings.filterwarnings('ignore') #Initializing the plotly into offline mode. pyo.init_notebook_mode(connected = True) #after sucessful complition of work, plotly goes to offline. cf.go_offline() #read the data data = pd.read_excel(r'C:\Users\myoge\OneDrive\Desktop\covid_19\covid_19_india.xlsx') # 先确认列名是否正确 print("数据集列名:", data.columns.tolist()) data.head() #check the dataset have any null values and sum/count those all null values data.isnull().sum() #droping the the 'ConfirmedIndianNational' and 'ConfirmedForeignNational' columns. data.drop(['ConfirmedIndianNational','ConfirmedForeignNational'], axis=1, inplace = True) # 提前处理日期字段 data['Date'] = pd.to_datetime(data['Date'], dayfirst = True) #printing the dimentions of the table. data.shape #plotting a bar graph to see how many deaths and recovred cases are their in india. f, ax = plt.subplots(figsize = (25,25)) # 单独生成绘图用数据集,不覆盖原data,保留完整字段 plot_data = data[['State/UnionTerritory', 'Confirmed','Cured','Deaths']].sort_values('Confirmed', ascending= False) sns.set_color_codes('pastel') sns.barplot(x='Confirmed', y='State/UnionTerritory', data = plot_data,label = 'Total', color='red' ) sns.set_color_codes("muted") sns.barplot(x='Cured', y='State/UnionTerritory',data = plot_data,label = 'Cured ', color='blue' ) ax.legend(ncol=2, loc='lower right', frameon = True) ax.set(xlim = (0, 700000), ylabel = '',xlabel = 'Cases') sns.despine(left = True, bottom = True)
内容的提问来源于stack exchange,提问作者Yogesh
相关产品推荐
相关产品推荐

