refactor: nova métrica PAX * Dias_Operados para relevância de rotas
This commit is contained in:
15
create_nb.py
15
create_nb.py
@@ -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()
|
||||||
|
|||||||
198
modelos.ipynb
198
modelos.ipynb
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user