refactor: nova métrica PAX * Dias_Operados para relevância de rotas

This commit is contained in:
2026-06-07 20:18:15 -03:00
parent f96dae3d9e
commit 09cfda21a2
2 changed files with 112 additions and 101 deletions

View File

@@ -127,13 +127,16 @@ estatisticas_trechos = demanda_diaria_completa.groupby('Trecho').agg(
Dias_Operados=('PAX', lambda x: (x > 0).sum()) Dias_Operados=('PAX', lambda x: (x > 0).sum())
).reset_index() ).reset_index()
# Nova métrica: PAX/Dias_Operados (evitando divisão por zero) # Média PAX por dias operados (usado para o Fleet Assignment Model)
estatisticas_trechos['Media_PAX_Dias_Operados'] = estatisticas_trechos.apply( estatisticas_trechos['Media_PAX_Dias_Operados'] = estatisticas_trechos.apply(
lambda row: row['Total_PAX'] / row['Dias_Operados'] if row['Dias_Operados'] > 0 else 0, axis=1 lambda row: row['Total_PAX'] / row['Dias_Operados'] if row['Dias_Operados'] > 0 else 0, axis=1
) )
# Ordenar pelas rotas com maior Média PAX por dias operados # Nova métrica solicitada: PAX * Dias_Operados
estatisticas_trechos = estatisticas_trechos.sort_values(by='Media_PAX_Dias_Operados', ascending=False) estatisticas_trechos['Score_Relevancia'] = estatisticas_trechos['Total_PAX'] * estatisticas_trechos['Dias_Operados']
# Ordenar pelas rotas com maior métrica (PAX * Dias_Operados)
estatisticas_trechos = estatisticas_trechos.sort_values(by='Score_Relevancia', ascending=False)
# Definir número de trechos alvo # Definir número de trechos alvo
NUM_TRECHOS = 5 NUM_TRECHOS = 5
@@ -143,9 +146,9 @@ display(top_trechos)
# Gráfico # Gráfico
plt.figure(figsize=(10, 6)) plt.figure(figsize=(10, 6))
sns.barplot(data=top_trechos, x='Trecho', y='Media_PAX_Dias_Operados', hue='Trecho', palette='viridis', legend=False) sns.barplot(data=top_trechos, x='Trecho', y='Score_Relevancia', hue='Trecho', palette='viridis', legend=False)
plt.title(f'Top {NUM_TRECHOS} Trechos Mais Relevantes (PAX / Dias Operados)') plt.title(f'Top {NUM_TRECHOS} Trechos Mais Relevantes (PAX * Dias Operados)')
plt.ylabel('Média de PAX por Dia Operado') plt.ylabel('Score de Relevância (PAX * Dias Operados)')
plt.xlabel('Trecho (Origem - Destino)') plt.xlabel('Trecho (Origem - Destino)')
plt.xticks(rotation=45) plt.xticks(rotation=45)
plt.tight_layout() plt.tight_layout()

File diff suppressed because one or more lines are too long