Descargar Datos De Pasajeros Aéreos

0 views
Skip to first unread message

Ashlie Hagenson

unread,
Apr 17, 2024, 2:09:04 PM4/17/24
to hedcatersdrib

Cómo descargar y analizar el conjunto de datos de pasajeros aéreos

Si está interesado en aprender a realizar análisis de series temporales en Python, una buena manera de comenzar es trabajando con un conjunto de datos del mundo real. En este artículo, le mostraremos cómo descargar y analizar el conjunto de datos de pasajeros aéreos, que es un conjunto de datos ampliamente utilizado en el campo del análisis de series temporales. El conjunto de datos contiene números mensuales de pasajeros de aerolíneas desde 1949 hasta 1960 y se ha utilizado en varios estudios para desarrollar modelos de predicción y analizar las tendencias y la estacionalidad de los datos.

Introducción

Qué es el conjunto de datos de pasajeros aéreos y por qué usarlo?

El conjunto de datos de pasajeros aéreos consiste en el número de pasajeros (en miles) que viajaron por aire entre 1949 y 1960. El conjunto de datos tiene 144 observaciones, con una observación por mes en el período. Los datos muestran una tendencia al alza, con un patrón estacional notable. También hay cierta variabilidad en los datos.

descargar datos de pasajeros aéreos


Descargar archivo https://t.co/Qwpd9bbNE8



El conjunto de datos de pasajeros aéreos es un buen ejemplo de una serie temporal, que es una secuencia de observaciones registradas a intervalos regulares a lo largo del tiempo. El análisis de series temporales es una rama de las estadísticas que se ocupa del análisis y modelado de datos dependientes del tiempo. El análisis de series temporales puede ser útil para comprender el comportamiento y la dinámica de un sistema, identificar patrones y tendencias, pronosticar valores futuros y probar hipótesis.

Cómo descargar el conjunto de datos de diferentes fuentes

Hay varios repositorios en línea que ofrecen conjuntos de datos gratuitos y abiertos para proyectos de ciencia de datos. Algunos de ellos son:

    • Kaggle: Una plataforma para concursos de ciencia de datos y recursos de aprendizaje. Kaggle alberga muchos conjuntos de datos sobre diversos temas, incluyendo el conjunto de datos de pasajeros aéreos.
    • R Datasets: Una colección de conjuntos de datos que se incluyen con paquetes R o están disponibles en línea. R Datasets incluye el dataset de pasajeros aéreos como parte del paquete de datasets.
    • Towards Dev: Un blog que cubre temas relacionados con la ciencia de datos, el aprendizaje automático y la inteligencia artificial. Towards Dev también proporciona tutoriales y casos de uso para varios conjuntos de datos, incluido el conjunto de datos de pasajeros aéreos.

    Para descargar el conjunto de datos desde cualquiera de estas fuentes, puede seguir estos pasos:

      • Vaya al sitio web donde se almacena el conjunto de datos.
      • Encuentre la carpeta o categoría donde se almacena el conjunto de datos.
      • Seleccione el conjunto de datos que necesita.
      • Haga clic en el icono o botón de descarga.
      • Seleccione el formato adecuado (generalmente CSV) para iniciar una descarga inmediata del conjunto de datos completo.

      Cómo importar y visualizar el conjunto de datos en Python

      Una vez que haya descargado el conjunto de datos, puede importarlo a Python utilizando pandas, que es una biblioteca popular para la manipulación y el análisis de datos. Pandas proporciona varias funciones para leer diferentes tipos de archivos, como CSV, Excel, JSON, etc. Por ejemplo, para leer un archivo CSV que contiene el conjunto de datos de pasajeros aéreos, puede usar el siguiente código:

      import pandas as pd dataset = pd.read_csv("airline-passengers .csv")

      Esto creará un dataframe pandas llamado dataset, que es una estructura de datos tabular que puede almacenar y manipular datos. Puede usar el método head() para ver las primeras filas del conjunto de datos:

      dataset.head()

      Esto mostrará algo como esto:

      Esto mostrará algo como esto:

      <class 'pandas.core.frame.DataFrame'> RangeIndex: 144 entradas, 0 a 143 Columnas de datos (total 2 columnas):   Columna no llena Dtype  ---  ------   ----------------- Número de columnas Dtype  -- -----  -- Mes 144 Objeto no completo 1 Pasajeros 144-no-null int64 dtypes: int64(1), object(1) uso de memoria: 2.4+ KB

      Puede ver que el conjunto de datos no tiene valores que faltan y que la columna Mes es de tipo objeto, lo que significa que se almacena como una cadena. Sin embargo, como queremos realizar un análisis de series temporales en los datos, necesitamos convertir la columna Mes en un objeto datetime, que es un tipo de datos especial que puede manejar fechas y horas. Para hacer esto, podemos usar la función pd.to_datetime() y asignar el resultado a la columna Mes:

      dataset['Month'] = pd.to_datetime(dataset['Month'])

      Ahora, si comprobamos el método info(), podemos ver que la columna Mes es de tipo datetime64[ns], lo que significa que es un objeto datetime:

      Esto mostrará algo como esto:

      <class 'pandas.core.frame.DataFrame'> RangeIndex: 144 entradas, 0 a 143 Columnas de datos (total 2 columnas):  #   Columna no llena Dtype   ----  --------   ------------------------------ > Mes 144 sin fecha[64]  1 Pasajeros 144 dtypes no nulos en 64: datetime64[ns](1), uso de memoria int64(1): 2.4 KB

      A continuación, queremos establecer la columna Month como el índice del marco de datos, lo que significa que se usará como las etiquetas de fila en lugar del índice numérico predeterminado. Esto facilitará el acceso y la manipulación de los datos en función del tiempo. Para hacer esto, podemos usar el método set_index() y pasar el nombre de la columna que queremos usar como índice:

      dataset = dataset.set_index('Mes')
      dataset.head()

      Esto mostrará algo como esto:

      Pasajeros --- - Mes 1949-01-01 112 1949-02-01 118 1949-03-01 132 1949-04-01 129 1949-05-01 121

      Finalmente, queremos visualizar los datos usando matplotlib, que es una biblioteca para crear gráficas y gráficos en Python. Matplotlib proporciona varias funciones para crear diferentes tipos de gráficos, como gráficos de líneas, gráficos de barras, gráficos de dispersión, etc. Por ejemplo, para crear un gráfico de líneas de la columna Pasajeros a lo largo del tiempo, podemos usar el siguiente código:

      import matplotlib.pyplot as plt plt.plot(dataset['Passengers']) plt.xlabel('Month') plt.ylabel('Passengers') plt.title('Airline Passenger Numbers from 1949 to 1960') plt.show()

      Esto mostrará una gráfica como esta:

      Gráfico de líneas de la columna Pasajeros a lo largo del tiempo

      Puede ver que la gráfica muestra una clara tendencia al alza y un patrón estacional en los datos. El número de pasajeros aumenta con el tiempo, con picos en los meses de verano y caídas en los meses de invierno. La gráfica también muestra algunas fluctuaciones y variaciones en los datos, que indican cierta aleatoriedad y ruido en los datos.

      Análisis de series temporales del conjunto de datos de pasajeros aéreos

      Descomposición de la serie temporal en tendencia, estacionalidad y residuos

      Uno de los primeros pasos en el análisis de series temporales es descomponer las series temporales en sus componentes: tendencia, estacionalidad y residuos. La tendencia es la dirección a largo plazo de los datos, la estacionalidad es la variación periódica de los datos, y los residuos son las fluctuaciones aleatorias de los datos. Descomponer las series temporales puede ayudarnos a entender los patrones subyacentes y la estructura de los datos, así como identificar cualquier anomalía o valores atípicos.

      from statsmodels.tsa.seasonal import seasonal_decompose decomposition = seasonal_decompose(dataset['Passengers'], model='additive') trend = decomposition.trend seasonal = decomposition.seasonal residual = decomposition.resid
      >

      Esto creará tres nuevos marcos de datos: tendencia, estacional y residual, que contienen la tendencia, estacional y componentes residuales de la columna Pasajeros, respectivamente. El argumento del modelo especifica si la serie temporal es aditiva o multiplicativa. Una serie temporal aditiva es aquella en la que los componentes se suman para formar la serie temporal original, mientras que una serie temporal multiplicativa es aquella en la que los componentes se multiplican para formar la serie temporal original. En este caso, utilizamos un modelo aditivo porque parece más apropiado para nuestros datos.

      Para visualizar los componentes de la serie temporal, podemos usar el método plot() del objeto de descomposición, que creará cuatro subtramas: una para la serie temporal original, una para el componente de tendencia, una para el componente estacional y una para el componente residual. Por ejemplo, para trazar la descomposición de nuestro conjunto de datos, podemos usar el siguiente código:

      decomposition.plot() plt.show()

      Esto mostrará una gráfica como esta:

      Gráfico de la descomposición de la columna Pasajeros

      Puede ver que el gráfico muestra cómo cada componente contribuye a la serie temporal original. El componente de tendencia muestra una curva suave que capta el aumento a largo plazo del número de pasajeros a lo largo del tiempo. El componente estacional muestra un patrón repetitivo que refleja la variación mensual en el número de pasajeros. El componente residual muestra el ruido aleatorio y las fluctuaciones que no se explican por la tendencia o los componentes estacionales.

      Pruebas de estacionalidad y transformación de los datos

      Para probar la estacionalidad, podemos usar varios métodos, como trazar las estadísticas de balanceo, realizar la prueba de Dickey-Fuller o usar la prueba KPSS. En este artículo, usaremos la prueba de Dickey-Fuller, que es una prueba estadística que prueba la hipótesis nula de que una serie temporal tiene una raíz unitaria, lo que significa que no es estacionaria. La prueba devuelve una estadística de prueba y un valor p, que se utilizan para rechazar o no rechazar la hipótesis nula. Un valor p bajo (típicamente menos de 0.05) indica que podemos rechazar la hipótesis nula y concluir que la serie temporal es estacionaria. Un valor p alto (típicamente mayor que 0.05) indica que no podemos rechazar la hipótesis nula y concluir que la serie temporal es no estacionaria.

      Para realizar la prueba Dickey-Fuller en nuestro conjunto de datos, podemos usar la función adfuller() de la biblioteca statsmodels, que toma una serie de tiempo como entrada y devuelve la estadística de prueba, el valor p y otra información. Por ejemplo, para realizar la prueba Dickey-Fuller en nuestra columna Pasajeros, podemos usar el siguiente código:

      from statsmodels.tsa.stattools import adfuller result = adfuller(dataset['Passengers']) print('Test statistic:', result[0]) print('p-value:', result[1])
      >

      Esto mostrará algo como esto:

      Estadística de la prueba: 0.8153688792060543 p-value: 0.99188024376411

      Se puede ver que el valor p es muy alto (0.99), lo que significa que no podemos rechazar la hipótesis nula y concluir que la columna Pasajeros es no estacionaria. Esto significa que necesitamos aplicar algunas transformaciones para hacerlo estacionario.

      dataset['Passengers_diff'] = dataset['Passengers']. diff(1)

      Esto creará una nueva columna llamada Passengers_diff, que contiene las diferencias de primer orden de la columna Pasajeros. Puede ver que el primer valor de esta columna es NaN, porque no hay ningún valor anterior que restar de ella. Para eliminar este valor de NaN, podemos usar el método dropna() de pandas, que elimina cualquier fila que contenga valores de NaN. Por ejemplo, para eliminar el valor NaN de nuestra columna Passengers_diff, podemos usar el siguiente código:

      dataset = dataset.dropna()

      Ahora, si comprobamos el método head(), podemos ver que la columna Passengers_diff no tiene valores NaN y contiene las diferencias de primer orden de la columna Pasajeros:

      dataset.head()

      Esto mostrará algo como esto:

      Pasajeros Passengers_diff --- -- - Mes 1949-02-01 118 6.0 1949-03-01 132 14.0 1949-04-01 129 -3.0 1949-05-01 121 -8.0 1949-06-01 135 14.0

      podemos trazar la columna Passengers_diff a lo largo del tiempo usando matplotlib, como hicimos antes para la columna Pasajeros. Por ejemplo, para trazar la columna Passengers_diff a lo largo del tiempo, podemos usar el siguiente código:

      plt.plot(dataset['Passengers_diff']) plt.xlabel('Month') plt.ylabel('Passengers_diff') plt.title('Diferencias de primer orden de números de pasajeros de aerolíneas') plt.show()
      >

      Esto mostrará una gráfica como esta:

      Gráfico de líneas de la columna Passengers_diff a lo largo del tiempo

      Se puede ver que la trama muestra una serie temporal más estacionaria, sin tendencia clara o estacionalidad. La gráfica también muestra menos variabilidad y fluctuaciones en los datos.

      result = adfuller(dataset['Passengers_diff']) print('Test statistic:', result[0]) print('p-value:', result[1])

      Esto mostrará algo como esto:

      Estadística de la prueba: -2.829266824170058 p-value: 0.054213290283824954

      Se puede ver que el valor p es mucho menor (0.05) que antes, lo que significa que podemos rechazar la hipótesis nula y concluir que la columna Passengers_diff es estacionaria. Esto significa que hemos transformado con éxito nuestras series temporales no estacionarias en una estacionaria aplicando diferencias de primer orden.

      Ajuste de modelos ARIMA y predicción de valores futuros

      El paso final en el análisis de series temporales es ajustar un modelo a los datos y usarlo para pronosticar valores futuros. Uno de los modelos más populares para el análisis de series temporales es ARIMA, que significa AutoRegressive Integrated Moving Average. ARIMA es una generalización de ARMA, que significa Media Móvil Regresiva. ARMA es una combinación de dos modelos: AR, que significa AutoRegresivo, y MA, que significa Media móvil.

      Un modelo AR es un modelo que utiliza valores pasados de las series temporales para predecir valores futuros. Un modelo AR se puede escribir como:

      es el término de error en el tiempo $t$, $ theta_1, theta_2, ..., theta_q$ son los coeficientes del modelo MA, y $q$ es el orden del modelo MA. Un modelo ARIMA puede ser denotado por tres parámetros: $(p,d,q)$, donde $p$ es el orden del modelo AR, $d$ es el grado de diferenciación, y $q$ es el orden del modelo MA. Por ejemplo, un modelo ARIMA(1,1) significa que tenemos un modelo AR(1), una diferencia de primer orden ($ Delta y_t = y_t - y_t-1$) y un modelo MA(1). Para ajustar un modelo ARIMA a nuestro conjunto de datos, podemos usar la función ARIMA() de statsmodels, que toma una serie de tiempo y tres parámetros $(p,d,q)$ como entrada y devuelve un objeto ARIMA que contiene el modelo ajustado y otra información. Por ejemplo, para ajustar un modelo ARIMA(1,1,1) a nuestra columna Passengers_diff, podemos usar el siguiente código:
      from statsmodels.tsa.arima.model import ARIMA model = ARIMA(dataset['Passengers_diff'], order=(1,1)) model_fit = .fit model()/>>
      Esto creará un objeto ARIMA llamado modelo, que contiene los parámetros y datos del modelo, y un objeto de resultados llamado model_fit, que contiene el modelo ajustado y otra información. Puede usar el método summary() del objeto de resultados para obtener un resumen del modelo, como los coeficientes, errores estándar, valores p y pruebas de diagnóstico. Por ejemplo, para obtener un resumen de nuestro objeto model_fit, podemos usar el siguiente código:
      model_fit.summary()
      >
      Puede ver que el resumen muestra los coeficientes y los valores p de los términos AR y MA, así como la varianza del término de error (sigma2). También puede ver algunas pruebas de diagnóstico, como la prueba de Ljung-Box para la autocorrelación, la prueba de Jarque-Bera para la normalidad y la prueba de heteroskedasticidad para la varianza constante. Para usar el modelo ajustado para pronosticar valores futuros, podemos usar el método forecast() del objeto resultados, que toma un argumento n que especifica cuántos pasos adelante para pronosticar. Por ejemplo, para predecir los próximos 12 meses de números de pasajeros usando nuestro objeto model_fit, podemos usar el siguiente código:
      forecast = model_fit.forecast(12)
      Esto creará una serie de pandas llamada pronóstico, que contiene los valores predichos para los próximos 12 meses basados en nuestro objeto model_fit. Puede utilizar el método plot() de pandas para trazar los valores de previsión junto con los valores originales de la columna Pasajeros usando matplotlib, como hicimos antes para la columna Passengers_diff. Por ejemplo, para trazar los valores de previsión junto con los valores originales de nuestro conjunto de datos, podemos usar el siguiente código:
      plt.plot(dataset['Passengers']) plt.plot(forecast) plt.xlabel('Month') plt.ylabel('Passengers') plt.title('Pronóstico de números de pasajeros de aerolíneas usando ARIMA(1,1)') plt.legend(['Original', 'Forecast']) plt.show()
      Esto mostrará un gráfico como este: Plot of the forecast values along with the original values
      Puede ver que el gráfico muestra los valores de pronóstico en azul y los valores originales en naranja para la comparación. El gráfico muestra que nuestro modelo predice un aumento continuo en el número de pasajeros con el tiempo, con alguna variación estacional.

      Conclusión

      Resumen de los puntos principales

      En este artículo, le hemos mostrado cómo descargar y analizar el conjunto de datos de pasajeros aéreos usando Python y varias bibliotecas como pandas, matplotlib y statsmodels.

        • Descargar el conjunto de datos de diferentes fuentes, como Kaggle, IATA, R Datasets y Towards Dev.
        • Importar y visualizar el conjunto de datos en Python usando pandas y matplotlib.
        • Descomponiendo la serie temporal en tendencia, estacionalidad y residuos usando statsmodels.
        • Pruebas de estacionalidad y transformación de datos mediante diferenciación y la prueba de Dickey-Fuller.
        • Ajuste de modelos ARIMA y predicción de valores futuros utilizando estatsmodels.

        También hemos aprendido algunos conceptos básicos y técnicas de análisis de series temporales, tales como componentes de series temporales, estacionalidad, diferenciación, modelos ARIMA y predicción.

        Recomendaciones para un análisis más profundo

        Si bien hemos realizado un simple análisis de series temporales del conjunto de datos de pasajeros aéreos, hay muchas más cosas que podemos hacer para mejorar nuestro análisis y resultados. Aquí hay algunas recomendaciones para un análisis adicional:

          • Explore diferentes valores de los parámetros $(p,d,q)$ para el modelo ARIMA y compare su rendimiento usando métricas como AIC, BIC, RMSE, MAE, etc.
          • Utilice la validación cruzada o la división de prueba de tren para evaluar la precisión del modelo en datos no vistos.
          • Utilice la búsqueda en cuadrícula u otros métodos de optimización para encontrar los valores óptimos de los parámetros $(p,d,q)$ para el modelo ARIMA.
          • Utilice otros tipos de modelos, como SARIMA, VAR, LSTM, etc., para capturar la estacionalidad y otras características de los datos.
          • Utilice variables exógenas, como indicadores económicos, datos meteorológicos, etc., para mejorar el modelo y tener en cuenta los factores externos que pueden afectar el número de pasajeros.

          Preguntas frecuentes

          Qué es una serie temporal?

          Cuáles son las ventajas de usar el análisis de series temporales?

          El análisis de series temporales puede ser útil para varios propósitos, como:

            • Comprender el comportamiento y la dinámica de un sistema a lo largo del tiempo.
            • Identificar patrones y tendencias en los datos.
            • Pronosticar valores futuros basados en datos pasados.
            • Probar hipótesis y relaciones causales entre variables.

            Cuáles son los desafíos de trabajar con datos de series temporales?

            Los datos de las series temporales pueden plantear algunos desafíos para el análisis, como:

              • No estacionalidad: La media, la varianza y la autocorrelación de los datos pueden cambiar con el tiempo.
              • Ruido: Los datos pueden contener fluctuaciones aleatorias y valores atípicos que oscurecen los patrones subyacentes.
              • Multicolinealidad: Los datos pueden estar correlacionados con otras variables o consigo mismos a diferentes intervalos.
              • Complejidad: Los datos pueden tener múltiples componentes, como tendencia, estacionalidad, ciclos, etc., que interactúan entre sí.

              Cuáles son algunas otras fuentes de datos de series temporales?

              Además del conjunto de datos de pasajeros aéreos, hay muchas otras fuentes de datos de series temporales que puede usar para análisis y aprendizaje. Algunos ejemplos son:

                • Tendencias de Google: Un sitio web que muestra con qué frecuencia se introduce un término de búsqueda particular en relación con el volumen total de búsqueda en varias regiones e idiomas.
                • Banco Mundial: Un sitio web que proporciona diversos indicadores y estadísticas sobre temas como población, salud, educación, economía, medio ambiente, etc., para diferentes países y regiones.
                • Quandl: Un sitio web que ofrece datos financieros y económicos de cientos de fuentes, como precios de las acciones, tipos de cambio, tasas de interés, tasas de inflación, etc.

                Cómo puedo aprender más sobre el análisis de series temporales en Python?

                Si desea obtener más información sobre el análisis de series temporales en Python, hay muchos recursos disponibles en línea que pueden ayudarlo. Algunos ejemplos son:

                  • Análisis de series temporales en Python: Un curso de DataCamp que enseña los fundamentos del análisis de series temporales en Python usando pandas, statsmodels y otras bibliotecas. El curso incluye ejercicios interactivos y proyectos.
                  • Predicción de series temporales con Python: Un libro de Jason Brownlee que cubre varios temas relacionados con la predicción de series temporales en Python usando varios métodos y modelos. El libro incluye ejemplos de código y tutoriales.
                  • Python Data Science Handbook: Un libro de Jake VanderPlas que cubre varios temas relacionados con la ciencia de datos en Python usando numpy, pandas, matplotlib, scikit-learn y otras bibliotecas. El libro incluye un capítulo sobre el trabajo con datos de series temporales.

                  Estos son solo algunos de los recursos que puedes usar para aprender más sobre el análisis de series temporales en Python. Hay muchos más recursos disponibles en línea que pueden satisfacer sus necesidades y preferencias.

                  Espero que hayas disfrutado de este artículo y hayas aprendido algo nuevo. Gracias por leer!

                  17b9afdd22
                  Reply all
                  Reply to author
                  Forward
                  0 new messages