Capítulo 9: Datos de series temporales: consideraciones especiales
9.3 Ejercicios prácticos para el capítulo 9
Estos ejercicios te ayudarán a practicar la creación e interpretación de características de fecha/hora, características con retraso y características de ventana móvil en datos de series temporales. Cada ejercicio se basa en las técnicas discutidas en este capítulo, permitiéndote profundizar en la manipulación de datos de series temporales y la ingeniería de características.
Ejercicio 1: Extracción de características de fecha/hora
Se te proporciona un conjunto de datos con registros diarios de ventas. Tu tarea es:
- Convertir la columna Date al formato datetime.
- Extraer Año, Mes, Día de la semana y Trimestre como características separadas.
import pandas as pd
# Sample data with dates
data = {'Date': ['2022-01-15', '2022-02-10', '2022-03-20', '2022-04-15', '2022-05-25'],
'Sales': [200, 220, 250, 210, 230]}
df = pd.DataFrame(data)
# Solution: Convert Date column to datetime and extract date/time features
df['Date'] = pd.to_datetime(df['Date'])
df['Year'] = df['Date'].dt.year
df['Month'] = df['Date'].dt.month
df['DayOfWeek'] = df['Date'].dt.dayofweek
df['Quarter'] = df['Date'].dt.quarter
print("Dataset with extracted date/time features:")
print(df)
Ejercicio 2: Creación de características con retraso
Usando el mismo conjunto de datos, crea características con retraso para representar las ventas de:
- El día anterior (Sales_Lag1).
- Dos días antes (Sales_Lag2).
# Solution: Create lagged features
df['Sales_Lag1'] = df['Sales'].shift(1)
df['Sales_Lag2'] = df['Sales'].shift(2)
print("Dataset with lagged features:")
print(df)
Ejercicio 3: Creación de características de ventana móvil
Usando el mismo conjunto de datos, calcula las siguientes estadísticas móviles:
- Una media móvil de 3 días para la columna Sales.
- Una desviación estándar móvil de 3 días para la columna Sales.
# Solution: Create rolling mean and standard deviation
df['RollingMean_3'] = df['Sales'].rolling(window=3).mean()
df['RollingStd_3'] = df['Sales'].rolling(window=3).std()
print("Dataset with rolling features:")
print(df)
Ejercicio 4: Combinación de características de fecha/hora, con retraso y de ventana móvil
En este ejercicio, crearás un conjunto de datos combinado con características de fecha/hora, características con retraso y características de ventana móvil. Usando el conjunto de datos anterior, completa las siguientes tareas:
- Extrae Año, Mes y Día de la semana.
- Crea una característica Sales_Lag1 para las ventas del día anterior.
- Calcula una media móvil de 3 días para la columna Sales.
# Solution: Combine date/time, lagged, and rolling features
df['Year'] = df['Date'].dt.year
df['Month'] = df['Date'].dt.month
df['DayOfWeek'] = df['Date'].dt.dayofweek
df['Sales_Lag1'] = df['Sales'].shift(1)
df['RollingMean_3'] = df['Sales'].rolling(window=3).mean()
print("Combined dataset with date/time, lagged, and rolling features:")
print(df)
Ejercicio 5: Codificación de características cíclicas
Para la característica Día de la semana en el conjunto de datos anterior, aplica codificación de seno y coseno para capturar su naturaleza cíclica. Esto ayudará al modelo a reconocer que los días de la semana forman un ciclo repetitivo.
import numpy as np
# Solution: Encode Day of the Week as cyclical features
df['DayOfWeek_sin'] = np.sin(2 * np.pi * df['DayOfWeek'] / 7)
df['DayOfWeek_cos'] = np.cos(2 * np.pi * df['DayOfWeek'] / 7)
print("Dataset with cyclical encoding for Day of the Week:")
print(df[['DayOfWeek', 'DayOfWeek_sin', 'DayOfWeek_cos']])
Estos ejercicios cubren los fundamentos del trabajo con características de fecha/hora, retardadas y de ventana en datos de series temporales, junto con técnicas de codificación cíclica. Al practicar estos métodos, obtendrás una comprensión más profunda de cómo crear e interpretar características dependientes del tiempo, que son esenciales para una predicción efectiva en series temporales.
9.3 Ejercicios prácticos para el capítulo 9
Estos ejercicios te ayudarán a practicar la creación e interpretación de características de fecha/hora, características con retraso y características de ventana móvil en datos de series temporales. Cada ejercicio se basa en las técnicas discutidas en este capítulo, permitiéndote profundizar en la manipulación de datos de series temporales y la ingeniería de características.
Ejercicio 1: Extracción de características de fecha/hora
Se te proporciona un conjunto de datos con registros diarios de ventas. Tu tarea es:
- Convertir la columna Date al formato datetime.
- Extraer Año, Mes, Día de la semana y Trimestre como características separadas.
import pandas as pd
# Sample data with dates
data = {'Date': ['2022-01-15', '2022-02-10', '2022-03-20', '2022-04-15', '2022-05-25'],
'Sales': [200, 220, 250, 210, 230]}
df = pd.DataFrame(data)
# Solution: Convert Date column to datetime and extract date/time features
df['Date'] = pd.to_datetime(df['Date'])
df['Year'] = df['Date'].dt.year
df['Month'] = df['Date'].dt.month
df['DayOfWeek'] = df['Date'].dt.dayofweek
df['Quarter'] = df['Date'].dt.quarter
print("Dataset with extracted date/time features:")
print(df)
Ejercicio 2: Creación de características con retraso
Usando el mismo conjunto de datos, crea características con retraso para representar las ventas de:
- El día anterior (Sales_Lag1).
- Dos días antes (Sales_Lag2).
# Solution: Create lagged features
df['Sales_Lag1'] = df['Sales'].shift(1)
df['Sales_Lag2'] = df['Sales'].shift(2)
print("Dataset with lagged features:")
print(df)
Ejercicio 3: Creación de características de ventana móvil
Usando el mismo conjunto de datos, calcula las siguientes estadísticas móviles:
- Una media móvil de 3 días para la columna Sales.
- Una desviación estándar móvil de 3 días para la columna Sales.
# Solution: Create rolling mean and standard deviation
df['RollingMean_3'] = df['Sales'].rolling(window=3).mean()
df['RollingStd_3'] = df['Sales'].rolling(window=3).std()
print("Dataset with rolling features:")
print(df)
Ejercicio 4: Combinación de características de fecha/hora, con retraso y de ventana móvil
En este ejercicio, crearás un conjunto de datos combinado con características de fecha/hora, características con retraso y características de ventana móvil. Usando el conjunto de datos anterior, completa las siguientes tareas:
- Extrae Año, Mes y Día de la semana.
- Crea una característica Sales_Lag1 para las ventas del día anterior.
- Calcula una media móvil de 3 días para la columna Sales.
# Solution: Combine date/time, lagged, and rolling features
df['Year'] = df['Date'].dt.year
df['Month'] = df['Date'].dt.month
df['DayOfWeek'] = df['Date'].dt.dayofweek
df['Sales_Lag1'] = df['Sales'].shift(1)
df['RollingMean_3'] = df['Sales'].rolling(window=3).mean()
print("Combined dataset with date/time, lagged, and rolling features:")
print(df)
Ejercicio 5: Codificación de características cíclicas
Para la característica Día de la semana en el conjunto de datos anterior, aplica codificación de seno y coseno para capturar su naturaleza cíclica. Esto ayudará al modelo a reconocer que los días de la semana forman un ciclo repetitivo.
import numpy as np
# Solution: Encode Day of the Week as cyclical features
df['DayOfWeek_sin'] = np.sin(2 * np.pi * df['DayOfWeek'] / 7)
df['DayOfWeek_cos'] = np.cos(2 * np.pi * df['DayOfWeek'] / 7)
print("Dataset with cyclical encoding for Day of the Week:")
print(df[['DayOfWeek', 'DayOfWeek_sin', 'DayOfWeek_cos']])
Estos ejercicios cubren los fundamentos del trabajo con características de fecha/hora, retardadas y de ventana en datos de series temporales, junto con técnicas de codificación cíclica. Al practicar estos métodos, obtendrás una comprensión más profunda de cómo crear e interpretar características dependientes del tiempo, que son esenciales para una predicción efectiva en series temporales.
9.3 Ejercicios prácticos para el capítulo 9
Estos ejercicios te ayudarán a practicar la creación e interpretación de características de fecha/hora, características con retraso y características de ventana móvil en datos de series temporales. Cada ejercicio se basa en las técnicas discutidas en este capítulo, permitiéndote profundizar en la manipulación de datos de series temporales y la ingeniería de características.
Ejercicio 1: Extracción de características de fecha/hora
Se te proporciona un conjunto de datos con registros diarios de ventas. Tu tarea es:
- Convertir la columna Date al formato datetime.
- Extraer Año, Mes, Día de la semana y Trimestre como características separadas.
import pandas as pd
# Sample data with dates
data = {'Date': ['2022-01-15', '2022-02-10', '2022-03-20', '2022-04-15', '2022-05-25'],
'Sales': [200, 220, 250, 210, 230]}
df = pd.DataFrame(data)
# Solution: Convert Date column to datetime and extract date/time features
df['Date'] = pd.to_datetime(df['Date'])
df['Year'] = df['Date'].dt.year
df['Month'] = df['Date'].dt.month
df['DayOfWeek'] = df['Date'].dt.dayofweek
df['Quarter'] = df['Date'].dt.quarter
print("Dataset with extracted date/time features:")
print(df)
Ejercicio 2: Creación de características con retraso
Usando el mismo conjunto de datos, crea características con retraso para representar las ventas de:
- El día anterior (Sales_Lag1).
- Dos días antes (Sales_Lag2).
# Solution: Create lagged features
df['Sales_Lag1'] = df['Sales'].shift(1)
df['Sales_Lag2'] = df['Sales'].shift(2)
print("Dataset with lagged features:")
print(df)
Ejercicio 3: Creación de características de ventana móvil
Usando el mismo conjunto de datos, calcula las siguientes estadísticas móviles:
- Una media móvil de 3 días para la columna Sales.
- Una desviación estándar móvil de 3 días para la columna Sales.
# Solution: Create rolling mean and standard deviation
df['RollingMean_3'] = df['Sales'].rolling(window=3).mean()
df['RollingStd_3'] = df['Sales'].rolling(window=3).std()
print("Dataset with rolling features:")
print(df)
Ejercicio 4: Combinación de características de fecha/hora, con retraso y de ventana móvil
En este ejercicio, crearás un conjunto de datos combinado con características de fecha/hora, características con retraso y características de ventana móvil. Usando el conjunto de datos anterior, completa las siguientes tareas:
- Extrae Año, Mes y Día de la semana.
- Crea una característica Sales_Lag1 para las ventas del día anterior.
- Calcula una media móvil de 3 días para la columna Sales.
# Solution: Combine date/time, lagged, and rolling features
df['Year'] = df['Date'].dt.year
df['Month'] = df['Date'].dt.month
df['DayOfWeek'] = df['Date'].dt.dayofweek
df['Sales_Lag1'] = df['Sales'].shift(1)
df['RollingMean_3'] = df['Sales'].rolling(window=3).mean()
print("Combined dataset with date/time, lagged, and rolling features:")
print(df)
Ejercicio 5: Codificación de características cíclicas
Para la característica Día de la semana en el conjunto de datos anterior, aplica codificación de seno y coseno para capturar su naturaleza cíclica. Esto ayudará al modelo a reconocer que los días de la semana forman un ciclo repetitivo.
import numpy as np
# Solution: Encode Day of the Week as cyclical features
df['DayOfWeek_sin'] = np.sin(2 * np.pi * df['DayOfWeek'] / 7)
df['DayOfWeek_cos'] = np.cos(2 * np.pi * df['DayOfWeek'] / 7)
print("Dataset with cyclical encoding for Day of the Week:")
print(df[['DayOfWeek', 'DayOfWeek_sin', 'DayOfWeek_cos']])
Estos ejercicios cubren los fundamentos del trabajo con características de fecha/hora, retardadas y de ventana en datos de series temporales, junto con técnicas de codificación cíclica. Al practicar estos métodos, obtendrás una comprensión más profunda de cómo crear e interpretar características dependientes del tiempo, que son esenciales para una predicción efectiva en series temporales.
9.3 Ejercicios prácticos para el capítulo 9
Estos ejercicios te ayudarán a practicar la creación e interpretación de características de fecha/hora, características con retraso y características de ventana móvil en datos de series temporales. Cada ejercicio se basa en las técnicas discutidas en este capítulo, permitiéndote profundizar en la manipulación de datos de series temporales y la ingeniería de características.
Ejercicio 1: Extracción de características de fecha/hora
Se te proporciona un conjunto de datos con registros diarios de ventas. Tu tarea es:
- Convertir la columna Date al formato datetime.
- Extraer Año, Mes, Día de la semana y Trimestre como características separadas.
import pandas as pd
# Sample data with dates
data = {'Date': ['2022-01-15', '2022-02-10', '2022-03-20', '2022-04-15', '2022-05-25'],
'Sales': [200, 220, 250, 210, 230]}
df = pd.DataFrame(data)
# Solution: Convert Date column to datetime and extract date/time features
df['Date'] = pd.to_datetime(df['Date'])
df['Year'] = df['Date'].dt.year
df['Month'] = df['Date'].dt.month
df['DayOfWeek'] = df['Date'].dt.dayofweek
df['Quarter'] = df['Date'].dt.quarter
print("Dataset with extracted date/time features:")
print(df)
Ejercicio 2: Creación de características con retraso
Usando el mismo conjunto de datos, crea características con retraso para representar las ventas de:
- El día anterior (Sales_Lag1).
- Dos días antes (Sales_Lag2).
# Solution: Create lagged features
df['Sales_Lag1'] = df['Sales'].shift(1)
df['Sales_Lag2'] = df['Sales'].shift(2)
print("Dataset with lagged features:")
print(df)
Ejercicio 3: Creación de características de ventana móvil
Usando el mismo conjunto de datos, calcula las siguientes estadísticas móviles:
- Una media móvil de 3 días para la columna Sales.
- Una desviación estándar móvil de 3 días para la columna Sales.
# Solution: Create rolling mean and standard deviation
df['RollingMean_3'] = df['Sales'].rolling(window=3).mean()
df['RollingStd_3'] = df['Sales'].rolling(window=3).std()
print("Dataset with rolling features:")
print(df)
Ejercicio 4: Combinación de características de fecha/hora, con retraso y de ventana móvil
En este ejercicio, crearás un conjunto de datos combinado con características de fecha/hora, características con retraso y características de ventana móvil. Usando el conjunto de datos anterior, completa las siguientes tareas:
- Extrae Año, Mes y Día de la semana.
- Crea una característica Sales_Lag1 para las ventas del día anterior.
- Calcula una media móvil de 3 días para la columna Sales.
# Solution: Combine date/time, lagged, and rolling features
df['Year'] = df['Date'].dt.year
df['Month'] = df['Date'].dt.month
df['DayOfWeek'] = df['Date'].dt.dayofweek
df['Sales_Lag1'] = df['Sales'].shift(1)
df['RollingMean_3'] = df['Sales'].rolling(window=3).mean()
print("Combined dataset with date/time, lagged, and rolling features:")
print(df)
Ejercicio 5: Codificación de características cíclicas
Para la característica Día de la semana en el conjunto de datos anterior, aplica codificación de seno y coseno para capturar su naturaleza cíclica. Esto ayudará al modelo a reconocer que los días de la semana forman un ciclo repetitivo.
import numpy as np
# Solution: Encode Day of the Week as cyclical features
df['DayOfWeek_sin'] = np.sin(2 * np.pi * df['DayOfWeek'] / 7)
df['DayOfWeek_cos'] = np.cos(2 * np.pi * df['DayOfWeek'] / 7)
print("Dataset with cyclical encoding for Day of the Week:")
print(df[['DayOfWeek', 'DayOfWeek_sin', 'DayOfWeek_cos']])
Estos ejercicios cubren los fundamentos del trabajo con características de fecha/hora, retardadas y de ventana en datos de series temporales, junto con técnicas de codificación cíclica. Al practicar estos métodos, obtendrás una comprensión más profunda de cómo crear e interpretar características dependientes del tiempo, que son esenciales para una predicción efectiva en series temporales.