为什么不显示日期选择器范围的任何数字?

问题描述 投票:0回答:1

谁能帮我解决这个问题?我试图在 Jupyter Notebook 中使用 Dash 制作日期选择器范围,但没有出现如下图所示的数字。如果有错误,任何人都可以纠正我的代码吗?请赐教。 no figure appears

我正在使用这个数据集 数据集

这是我的代码,如下所示

collisions = (
    pd.read_csv("NYC_Collisions.csv")
    .astype({"ACCIDENT_DATE": "datetime64[ns]"})
    .loc[:,["ACCIDENT_DATE", "BOROUGH", "COLLISION_ID"]]
    .groupby(["ACCIDENT_DATE", "BOROUGH"], as_index=False)
    .count()
    .rename(columns={
        "COLLISION_ID":"COLLISIONS", 
        "ACCIDENT_DATE":"DATE"})  
)

collisions.head()

from datetime import datetime
from datetime import date

app = Dash(__name__)


app.layout = html.Div([
    dcc.DatePickerRange(
        id="date picker",
        min_date_allowed=collisions["DATE"].min(),
        max_date_allowed=collisions["DATE"].max(),
        initial_visible_month=collisions["DATE"].max(),
        start_date=collisions["DATE"].min(),
        end_date=date(2022,1,1),
    ),
    dcc.Graph(id="graph")
])

@app.callback(Output("graph", "figure"),
              [Input("date picker", "start_date"),
               Input("date picker", "end_date"),])
def plot_collisions_bar(start_date, end_date):
    fig = px.bar(
        (collisions
         .loc[collisions["DATE"].between(start_date, end_date)]
         .groupby("BOROUGH", as_index=False)
         .sum()
        )
        ,
        x="COLLISIONS",
        y="BOROUGH",
        title=f"Traffic Accidents in NYC between {start_date[:10]} and {end_date[:10]}"
    )
    return fig

if __name__ == "__main__":
    app.run_server(mode="inline", port=8001, width="60%")
python jupyter-notebook jupyter plotly-dash dashboard
1个回答
0
投票

我认为问题来自:

fig = px.bar(
        (collisions
         .loc[collisions["DATE"].between(start_date, end_date)]
         .groupby("BOROUGH", as_index=False)
         .sum()
        )

所以也许你应该更改你的代码如下以使其工作:

collisions = (
    pd.read_csv("NYC_Collisions.csv")
    .astype({"ACCIDENT_DATE": "datetime64[ns]"})
    .loc[:,["ACCIDENT_DATE", "BOROUGH", "COLLISION_ID"]]
    .groupby(["ACCIDENT_DATE", "BOROUGH"], as_index=False)
    .count()
    .rename(columns={
        "COLLISION_ID":"COLLISIONS", 
        "ACCIDENT_DATE":"DATE"})  
)

collisions.head()

from datetime import datetime
from datetime import date

app = Dash(__name__)


app.layout = html.Div([
    dcc.DatePickerRange(
        id="date picker",
        min_date_allowed=collisions["DATE"].min(),
        max_date_allowed=collisions["DATE"].max(),
        initial_visible_month=collisions["DATE"].max(),
        start_date=collisions["DATE"].min(),
        end_date=date(2022,1,1),
    ),
    dcc.Graph(id="graph")
])

@app.callback(Output("graph", "figure"),
              [Input("date picker", "start_date"),
               Input("date picker", "end_date"),])
def plot_collisions_bar(start_date, end_date):
    df2 = collisions[collisions["DATE"].between(start_date, end_date)]
    df3 = pd.pivot_table(df2, index='BOROUGH', values='COLLISIONS', aggfunc=np.sum).reset_index()
    fig = px.bar(df3,
        x="COLLISIONS",
        y="BOROUGH",
        title=f"Traffic Accidents in NYC between {start_date[:10]} and {end_date[:10]}"
    )
    return fig

if __name__ == "__main__":
    app.run_server(mode="inline", port=8001, width="60%")

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.