Relatório de Análise de Atraso de Voos

Uma análise completa para prever e entender os atrasos em voos.

1. Introdução aos Dados

Os dados foram carregados a partir do arquivo flights.csv e possuem a seguinte estrutura inicial.

Primeiras 5 Linhas

Esta tabela mostra as primeiras 5 linhas do nosso conjunto de dados. Ela nos dá uma visão rápida de como as informações estão organizadas, incluindo colunas como flight_id (identificação do voo), airline (companhia aérea), aircraft_type (tipo de aeronave) e a variável que queremos prever, o delay (atraso).

flight_id airline aircraft_type schengen origin arrival_time departure_time day year is_holiday delay
0 26 MM Airbus A320 non-schengen TCY 8.885071 10.885071 0 2010 False 70.205981
1 10 YE Airbus A320 non-schengen TCY 8.939996 11.939996 0 2010 False 38.484609
2 3 BZ Embraer E175 schengen TZF 18.635384 22.635384 0 2010 False 2.388305
3 28 BZ Airbus A330 non-schengen EMM 15.967963 17.967963 0 2010 False 19.138491
4 15 BZ Airbus A330 non-schengen FJB 16.571894 19.571894 0 2010 False 15.016271

Últimas 5 Linhas

De forma similar, esta tabela exibe as últimas 5 linhas do nosso conjunto de dados. Isso ajuda a verificar se os dados estão completos e se há alguma diferença no final do arquivo, como o ano que muda para 2022 e a coluna is_holiday (se é feriado) que muda para True.

flight_id airline aircraft_type schengen origin arrival_time departure_time day year is_holiday delay
28620 15 BZ Airbus A330 non-schengen FJB 16.571894 19.571894 364 2022 True 63.985223
28621 16 MM Airbus A320 non-schengen CSF 17.041281 20.041281 364 2022 True 99.168900
28622 12 YE Airbus A330 schengen TZF 17.313731 21.313731 364 2022 True 104.506894
28623 6 YE Boeing 787 schengen AUZ 17.033688 19.033688 364 2022 True 95.617697
28624 6 YE Boeing 787 schengen AUZ 17.033688 19.033688 364 2022 True 88.654204

2. Análise Exploratória dos Dados (EDA)

Gráficos para entender a distribuição e as relações entre as variáveis.

Informações do Dataset

Esta seção descreve a estrutura geral do dataset. Podemos ver que há 28.625 entradas e 11 colunas. A tabela também nos informa o tipo de dado de cada coluna (por exemplo, int64 para números inteiros, object para texto e float64 para números com casas decimais) e se há valores ausentes.

                    
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 28625 entries, 0 to 28624
Data columns (total 11 columns):
 #   Column           Non-Null Count  Dtype  
---  ------           --------------  -----  
 0   flight_id        28625 non-null  int64  
 1   airline          28625 non-null  object 
 2   aircraft_type    28625 non-null  object 
 3   schengen         28625 non-null  object 
 4   origin           28625 non-null  object 
 5   arrival_time     28625 non-null  float64
 6   departure_time   28625 non-null  float64
 7   day              28625 non-null  int64  
 8   year             28625 non-null  int64  
 9   is_holiday       28625 non-null  bool   
 10  delay            28625 non-null  float64
dtypes: bool(1), float64(3), int64(3), object(4)
memory usage: 2.2+ MB
                    
                

Análise Descritiva

A análise descritiva nos dá um resumo estatístico das colunas numéricas, como média, desvio padrão (std) e valores mínimo e máximo. Por exemplo, a coluna delay (atraso) tem um atraso médio de aproximadamente 21.38 minutos, com um desvio padrão de 24.32. Um valor mínimo de atraso negativo (-29.36) pode indicar que alguns voos saíram ou chegaram mais cedo do que o programado.

flight_id arrival_time departure_time day year delay
count 28625.000000 28625.000000 28625.000000 28625.000000 28625.000000 28625.000000
mean 15.534882 14.182441 16.892441 182.029694 2016.036084 21.378931
std 8.665972 4.469733 4.469733 104.887258 4.013511 24.316447
min 1.000000 0.003923 2.003923 0.000000 2010.000000 -29.358253
25% 8.000000 10.733469 14.077691 91.000000 2013.000000 2.535048
50% 15.000000 15.496519 18.496519 182.000000 2016.000000 15.353328
75% 23.000000 17.041281 20.041281 273.000000 2019.000000 33.782806
max 30.000000 24.000000 25.000000 364.000000 2022.000000 146.402773

Voos por Companhia Aérea

Este gráfico de barras mostra a quantidade de voos operados por cada companhia aérea. É útil para entender qual companhia tem a maior ou menor representatividade no nosso conjunto de dados.

Gráfico de barras de voos por companhia aérea

Voos por Aeronave

Aqui podemos ver a distribuição dos voos por tipo de aeronave. Podemos identificar quais modelos de aeronave são mais comuns no dataset.

Gráfico de barras de voos por tipo de aeronave

Top 10 Atrasos por Tipo de Aeronave

Este gráfico destaca os 10 tipos de aeronave com o maior atraso médio. Ele nos ajuda a identificar rapidamente se alguns modelos específicos estão mais propensos a atrasos.

Gráfico de barras dos top 10 atrasos por tipo de aeronave

Distribuição dos Atrasos

O Boxplot é um gráfico que nos mostra a distribuição dos atrasos de voos de forma resumida. A caixa central representa 50% dos dados, a linha no meio é a mediana (valor do meio), e as "antenas" mostram a variação. Os pontos fora das antenas são os outliers (valores extremos), que indicam atrasos muito altos e incomuns.

Gráfico Boxplot da distribuição dos atrasos

Atraso Médio por Mês

Este gráfico de linha exibe o atraso médio dos voos ao longo dos meses do ano. Podemos observar se há alguma sazonalidade, ou seja, se os atrasos são maiores em épocas específicas, como no verão ou no inverno, ou durante feriados prolongados.

Gráfico de linhas do atraso médio por mês

3. Modelagem e Resultados

Análise da performance do modelo preditivo.

Nesta seção, avaliamos o desempenho do nosso modelo de Machine Learning que foi treinado para prever os atrasos. Os gráficos a seguir nos ajudam a entender o quão bem o modelo está fazendo suas previsões.

Gráfico de Resíduos

Um gráfico de resíduos mostra a diferença entre o valor real e o valor previsto pelo modelo. O ideal é que os pontos estejam espalhados aleatoriamente em torno do zero. Se houver um padrão (como uma curva), isso pode indicar que o modelo não está capturando bem a relação entre as variáveis.

Gráfico de resíduos do modelo

Previsões do Modelo

Este gráfico compara os valores de atraso reais (eixo Y) com as previsões do nosso modelo (eixo X). Uma linha diagonal perfeita (que passaria por todos os pontos) seria um modelo ideal, mas na prática isso raramente acontece. Quanto mais próximos os pontos estiverem da linha, melhor é a performance do modelo, pois significa que as previsões estão muito próximas dos valores reais.

Gráfico de previsões vs valores reais do modelo