def update_graph_flight_depart_delay(empname, origin, destination, start_date, end_date): start = dt.strptime(re.split('T| ', start_date)[0], '%Y-%m-%d') end = dt.strptime(re.split('T| ', end_date)[0], '%Y-%m-%d') plot_df = slice_data(anac_df, empname, origin, destination, start, end) plot_df.index = pd.to_datetime(plot_df['Partida Real']) plot_df = plot_df[plot_df['Situação do Voo'].isin(['Realizado'])] plot_df = plot_df.loc[str(start):str(end)] # atraso_series = (plot_df['Partida Real'] - # plot_df['Partida Prevista']).div(pd.Timedelta('1minute')) atraso_series = ( (pd.to_datetime(plot_df['Partida Real']) - pd.to_datetime(plot_df['Partida Prevista'])).dt.total_seconds() / 60) # print(atraso_series) print(empname, origin, destination, start, end) if plot_df.empty: print("Não há dados.") return px.scatter(title="Atrasos na decolagem") return px.scatter(plot_df, y=atraso_series.where(atraso_series > 0), labels={ "index": "Partida Real", "y": "Atraso (minutos)" }, color='Sigla da Empresa', title='Atrasos na decolagem')
def update_graph_flight_status_relative(empname, origin, destination, start_date, end_date): start = dt.strptime(re.split('T| ', start_date)[0], '%Y-%m-%d') end = dt.strptime(re.split('T| ', end_date)[0], '%Y-%m-%d') plot_df = slice_data(anac_df, empname, origin, destination, start, end) plot_df.index = pd.to_datetime(plot_df['Partida Real']) plot_df = plot_df.loc[str(start):str(end)] plot_df_all = plot_df[['Sigla da Empresa', 'Situação do Voo' ]].groupby(['Sigla da Empresa']).agg('count') plot_df_canceled = plot_df[[ 'Sigla da Empresa', 'Situação do Voo' ]].where(plot_df['Situação do Voo'] == 'Cancelado').groupby( ['Sigla da Empresa']).agg('count') inner_join = pd.merge(left=plot_df_all, right=plot_df_canceled, left_on='Sigla da Empresa', right_on='Sigla da Empresa') inner_join.columns = ['Total', 'Cancelados'] inner_join['Relativo'] = inner_join['Cancelados'] / inner_join['Total'] if plot_df.empty: print("Não há dados.") return px.scatter(title="Situação do Voo") return px.bar(inner_join, y='Relativo', title="Porcentagem de Voos Cancelados por Empresa", hover_data=["Relativo", "Total"])
def update_graph_flight_status(empname, origin, destination, start_date, end_date): start = dt.strptime(re.split('T| ', start_date)[0], '%Y-%m-%d') end = dt.strptime(re.split('T| ', end_date)[0], '%Y-%m-%d') plot_df = slice_data(anac_df, empname, origin, destination, start, end) plot_df.index = pd.to_datetime(plot_df['Partida Real']) plot_df = plot_df.loc[str(start):str(end)] print(empname, origin, destination, start, end) if plot_df.empty: print("Não há dados.") return px.scatter(title="Situação do Voo") return px.histogram(plot_df, color='Situação do Voo', x='Sigla da Empresa', barmode='group', title="Situação do Voo")
def update_graph_depart_arrival(empname, origin, destination, start_date, end_date): start = dt.strptime(re.split('T| ', start_date)[0], '%Y-%m-%d') end = dt.strptime(re.split('T| ', end_date)[0], '%Y-%m-%d') plot_df = slice_data(anac_df, empname, origin, destination, start, end) plot_df.index = pd.to_datetime(plot_df['Partida Real']) plot_df = plot_df.loc[str(start):str(end)] print(empname, origin, destination, start, end) if plot_df.empty: print("Não há dados.") return px.scatter(title="Partida e Chegada de Voos") return px.scatter(plot_df, y=plot_df['Chegada Real'], labels={"index": "Partida Real"}, color='Sigla da Empresa', title='Partida e Chegada de Voos')
def update_graph_flights_by_destination_airport(empname, origin, destination, start_date, end_date): start = dt.strptime(re.split('T| ', start_date)[0], '%Y-%m-%d') end = dt.strptime(re.split('T| ', end_date)[0], '%Y-%m-%d') plot_df = slice_data(anac_df, empname, None, destination, start, end) plot_df.index = pd.to_datetime(plot_df['Partida Real']) plot_df = plot_df.loc[str(start):str(end)] if plot_df.empty: print("Não há dados.") return px.scatter(title="Voos por Aeorporto (Destino)") return px.histogram(plot_df, color='Situação do Voo', x='Aeroporto Destino', barmode='group', title="Quantidade de Voos por Aeroporto (Destino)")
def update_graph_flights_per_day(empname, origin, destination, start_date, end_date): start = dt.strptime(re.split('T| ', start_date)[0], '%Y-%m-%d') end = dt.strptime(re.split('T| ', end_date)[0], '%Y-%m-%d') plot_df = slice_data(anac_df, empname, origin, None, start, end) plot_df.index = pd.to_datetime(plot_df['Partida Real']) plot_df = plot_df.loc[str(start):str(end)] # plot_df_agg = plot_df[['Partida Prevista', "Situação do Voo"]].groupby( # ['Partida Real']).agg('count') plot_df_agg = plot_df.where( plot_df["Situação do Voo"] == "Realizado").resample("D").count() if plot_df.empty: print("Não há dados.") return px.scatter(title="Voos por Aeorporto (Origem)") return px.line(plot_df_agg, x=plot_df_agg.index, y="Situação do Voo", title="Quantidade de Voos por Dia")
def update_graph_flight_airports_pair(empname, origin, destination, start_date, end_date): start = dt.strptime(re.split('T| ', start_date)[0], '%Y-%m-%d') end = dt.strptime(re.split('T| ', end_date)[0], '%Y-%m-%d') plot_df = slice_data(anac_df, empname, origin, destination, start, end) plot_df.index = pd.to_datetime(plot_df['Partida Real']) plot_df = plot_df.loc[str(start):str(end)] print(empname, origin, destination, start, end) if plot_df.empty: print("Não há dados.") return px.scatter(title="Aeroporto Origem vs Aeroporto Destino") return px.scatter(plot_df, x='Aeroporto Origem', y='Aeroporto Destino', color='Sigla da Empresa', title="Aeroporto Origem vs Aeroporto Destino")
def update_graph_flight_duration(empname, origin, destination, start_date, end_date): start = dt.strptime(re.split('T| ', start_date)[0], '%Y-%m-%d') end = dt.strptime(re.split('T| ', end_date)[0], '%Y-%m-%d') plot_df = slice_data(anac_df, empname, origin, destination, start, end) plot_df.index = pd.to_datetime(plot_df['Partida Real']) plot_df = plot_df[plot_df['Situação do Voo'].isin(['Realizado'])] plot_df = plot_df.loc[str(start):str(end)] duracao_series = (plot_df['Chegada Real'] - plot_df['Partida Real']).div( pd.Timedelta('1H')) print(empname, origin, destination, start, end) if plot_df.empty: print("Não há dados.") return px.scatter(title="Duração de Voo") return px.scatter(plot_df, y=duracao_series, labels={ "index": "Partida Real", "y": "Duração (horas)" }, color='Sigla da Empresa', title='Duração de Voo')