python - key 错误 : Timestamp

标签 python datetime plotly

我正在尝试构建一个可以随时间变化的交互式冠状病毒 map 。我有按国家和日期划分的病例数据。 “日期”列中值的数据类型为 datetime64。

但是,当我尝试绘制交互式 map 时,日期值似乎导致了错误。我应该如何修复它?

import numpy as np 
import pandas as pd 
import plotly as py 
import datetime
import plotly.express as px 
import plotly.graph_objs as go 
from plotly.subplots import make_subplots 
from plotly.offline import download_plotlyjs, init_notebook_mode, plot, iplot
init_notebook_mode(connected = True)
df = pd.read_csv(r'C:\Users\Public\Documents\covid_19_data.csv')
df = df.rename(columns = {'Country/Region' : 'Country'})
df = df.rename(columns = {'ObservationDate' : 'Date'})
df['Date'] = pd.to_datetime(df['Date'])
df.info()
df_datecountry = df.groupby(['Date', 'Country']).sum().reset_index().sort_values('Date', ascending = True)
fig = px.choropleth(df_datecountry, 
                    locations = 'Country', 
                    locationmode = 'country names',
                    color = 'Confirmed',
                    hover_name = 'Country', 
                    animation_frame = 'Date')

错误:

KeyError                                  Traceback (most recent call last)
<ipython-input-12-69e836d40d17> in <module>
----> 1 fig = px.choropleth(df_datecountry, 
      2                     locations = 'Country',
      3                     locationmode = 'country names',
      4                     color = 'Confirmed',
      5                     hover_name = 'Country',

~\anaconda3\lib\site-packages\plotly\express\_chart_types.py in choropleth(data_frame, lat, lon, locations, locationmode, geojson, featureidkey, color, facet_row, facet_col, facet_col_wrap, facet_row_spacing, facet_col_spacing, hover_name, hover_data, custom_data, animation_frame, animation_group, category_orders, labels, color_discrete_sequence, color_discrete_map, color_continuous_scale, range_color, color_continuous_midpoint, projection, scope, center, fitbounds, basemap_visible, title, template, width, height)
   1071     colored region mark on a map.
   1072     """
-> 1073     return make_figure(
   1074         args=locals(),
   1075         constructor=go.Choropleth,

~\anaconda3\lib\site-packages\plotly\express\_core.py in make_figure(args, constructor, trace_patch, layout_patch)
   2021                 val = group_name[i]
   2022                 try:
-> 2023                     m.updater(trace, m.val_map[val])  # covers most cases
   2024                 except ValueError:
   2025                     # this catches some odd cases like marginals

KeyError: Timestamp('2020-01-22 00:00:00')

想法? 谢谢

最佳答案

  • animation_frame 需要是一个字符串
  • 使用OWID数据来演示,日期列是数据框中的字符串。已使用它的日期版本将数据帧减少到最近 30 天
import plotly.express as px
import pandas as pd
import io
import requests
# get OWID data
df = pd.read_csv(io.StringIO(
    requests.get("https://raw.githubusercontent.com/owid/covid-19-data/master/public/data/owid-covid-data.csv").text))

# used for filtering
dt = pd.to_datetime(df["date"])
# last 30 days and exclude regional aggregations
fig = px.choropleth(df.loc[dt.ge(dt.max()-pd.Timedelta(days=30))].dropna(subset=["continent"]), 
                    locations = 'location', 
                    locationmode = 'country names',
                    color = 'new_deaths',
                    hover_name = 'location', 
                    animation_frame = 'date')

fig.update_layout(margin={"t":0,"b":0,"l":0,"r":0})

关于python - key 错误 : Timestamp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68900348/

相关文章:

python - 如何在Python 3中查找嵌套列表中的不同值并找出其差异?

python - 为什么我的图表显示不正确的最小值,使用 np.linspace 或 np.array 并且效果不佳?

python - plotly 指标数字舍入

python - 在 QTableWidget PyQt5 中突出显示单元格

python - 在不同的目录中安装库

python - 到盒子编号的 X-Y 坐标

.net - 如何使用 .net 将字符串 "yyyy-MM-ddZ"转换为日期时间?

javascript - 将日期时间转换为 ISO 格式

database - PostgreSql:获取格式奇怪的 "timestamp with time zone"

javascript - 使用 Plotly 查找直线交点