Representar datos que cambian con el tiempo es una de las tareas más valiosas en el análisis de datos. Cuando trabajas con tablas extensas, detectar patrones resulta complicado, pero al transformar esa información en un gráfico de líneas, las tendencias estacionales, los picos de actividad y las anomalías se vuelven evidentes de inmediato. Aquí se aborda paso a paso cómo construir visualizaciones de series temporales usando Python, Pandas y Matplotlib.
¿Qué es una serie temporal y por qué importa visualizarla?
Una serie temporal es un conjunto de datos ordenados cronológicamente. En el ejemplo presentado, un analista financiero de una empresa de energía renovable necesita monitorear la producción diaria de energía solar [0:03]. Al graficar esa producción a lo largo del tiempo, puede identificar rápidamente que en verano la generación aumenta y en invierno disminuye.
Esta técnica no se limita a las finanzas. Se aplica en:
- Meteorología: seguimiento de temperaturas y precipitaciones.
- Economía: evolución de indicadores macroeconómicos.
- Tráfico web: análisis de visitas por periodo.
- Salud: monitoreo de variables clínicas en el tiempo.
Poder representar visualmente estos datos ayuda a anticipar cambios futuros y a tomar decisiones proactivas.
¿Cómo crear un gráfico de líneas con fechas en Python?
El primer paso consiste en importar las librerías necesarias. Se utilizan NumPy para generar datos numéricos, Pandas para construir el dataframe y Matplotlib para graficar. Además, se importa el módulo matplotlib.dates con su función de formato, conocida como DateFormatter, que permite personalizar la forma en que se muestran las fechas en el eje X [0:28].
¿Cómo generar un dataset de fechas y valores?
Con pd.date_range() se crea un rango de fechas. Se especifica la fecha de inicio en formato string (por ejemplo, 2023-01-01) y la cantidad de periodos con el parámetro periods [1:02]. Para los valores, se usa np.random.randn() combinado con cumsum(), que calcula la suma acumulada y genera una serie que crece progresivamente, simulando el comportamiento real de datos temporales [1:22].
Ambos arreglos se integran en un dataframe de Pandas mediante un diccionario con las llaves fecha y valor [1:35].
¿Cómo configurar la figura y personalizar el gráfico?
Se crea la figura llamando a plt.subplots() —con la s al final, detalle importante que se menciona tras un error común al usar subplot en singular [2:42]— y se define el tamaño con figsize=(12, 6). Luego se invoca ax.plot() pasando las fechas y los valores, junto con el color deseado [2:05].
Un aspecto práctico es la rotación de etiquetas. Cuando las fechas son textos largos, se superponen unas sobre otras. Para evitarlo se usa plt.xticks(rotation=45), lo que inclina las etiquetas cuarenta y cinco grados y mejora la legibilidad [2:16].
¿Cómo aplicar series temporales a un caso de ventas mensuales?
El segundo ejemplo simula un análisis de ventas mensuales durante un año completo [3:20]. Se genera un rango de doce fechas usando el parámetro freq='M', que indica frecuencia mensual [3:50]. Las ventas se crean con np.random.randint() especificando un rango entre mil y cinco mil, con doce datos en total [4:06].
¿Cómo añadir marcadores, leyendas y formato de fecha escrito?
Al graficar, se añade el parámetro marker='o' para colocar un círculo en cada intersección de X con Y, y linestyle='-' para líneas continuas [4:38]. También se incluye un label='Ventas Mensuales' que luego se muestra con plt.legend() [4:55].
Para que los meses aparezcan con nombre en lugar de número, se configura el formateador de fechas. Usando ax.xaxis.set_major_formatter(DateFormatter('%b %Y')), la %b minúscula representa el mes abreviado de forma escrita y %Y el año completo [6:06]. El resultado transforma etiquetas numéricas como "2023-07" en "Jul 2023", facilitando la lectura del gráfico.
Finalmente, se ajusta el diseño con plt.tight_layout() para evitar que los elementos se recorten, y se llama a plt.show() para renderizar la visualización [5:40].
Si has seguido estos pasos, intenta crear tu propia serie temporal con datos reales o simulados y comparte el resultado en los comentarios.