Skip to content
Empieza gratis

¿El 03/04/2026 es 3 de abril o 4 de marzo?

Descubre por qué los programas adivinan el orden de una fecha, por qué el error más peligroso es el que no avisa, y aprende a decirles el formato.

Curso gratis. Tu Maestro, una IA, .

La sucursal manda sus ventas de septiembre y octubre, con la fecha como se escribe en México: día, mes y año.

ventas.csv
fecha,sucursal,importe
02/09/2026,Centro,1520.00
05/09/2026,Centro,890.50
03/10/2026,Zapopan,2210.00
07/10/2026,Centro,640.00
11/10/2026,Zapopan,1335.25
Datos sintéticos, CC0. El archivo, visto como texto.

Tu jefa pide las ventas por mes. Haces el cálculo en pandas y el resultado dice que hubo ventas en febrero, marzo, mayo, julio y noviembre. Nadie vendió nada en febrero: el archivo es de septiembre y octubre.

El archivo no está mal. 02/09/2026 es, para quien lo escribió, el 2 de septiembre. Pero en un CSV una fecha es texto, igual que todo lo demás, y el texto no dice en qué orden van el día y el mes. El programa que lo lee tiene que suponerlo. Y si supone que el mes va primero, 02/09/2026 es el 9 de febrero.

Cuando un valor tiene un día mayor a 12, como 13/09/2026, no hay duda posible: no existe el mes 13. Pero si todos los días de tu archivo son del 1 al 12, las dos lecturas son fechas válidas, y el programa elige una sin avisarte. Ese es el peor caso de todo el curso: un error que no parece error.

Predice qué hace cada lector con el archivo de la sucursal:

pandas adivina

Ejemplo 1 de 4

example.py
import pandas as pd

with open("ventas.csv", "w", encoding="utf-8") as archivo:
    archivo.write("fecha,sucursal,importe\n02/09/2026,Centro,1520.00\n05/09/2026,Centro,890.50\n03/10/2026,Zapopan,2210.00\n07/10/2026,Centro,640.00\n11/10/2026,Zapopan,1335.25\n")

ventas = pd.read_csv("ventas.csv")
ventas["fecha"] = pd.to_datetime(ventas["fecha"])
print(ventas["fecha"].dt.month.tolist())

Adivinar está bien: se guarda tal como la escribiste para compararla. Solo tú y tu Maestro ven tus predicciones.

Ejemplo 2 de 4, se abre cuando expliques este

Haz tu predicción

La lección no es "pandas lee mal y DuckDB lee bien". Es que los dos adivinan, y que la adivinanza puede salir distinta según el programa, la versión o los valores que traiga ese mes el archivo. Si un mes todas las ventas caen del 1 al 12, el mismo script que funcionaba empieza a dar meses equivocados.

La salida es decir el formato siempre que leas fechas de un CSV:

DóndeCómo se dice día/mes/año
pandas, al convertirpd.to_datetime(columna, format="%d/%m/%Y")
pandas, al leerpd.read_csv(..., parse_dates=["fecha"], date_format="%d/%m/%Y")
DuckDBread_csv(..., dateformat='%d/%m/%Y')

Los códigos %d, %m y %Y son los mismos en los dos programas. pandas también acepta dayfirst=True, que en nuestra corrida dio el resultado correcto, pero format es más preciso: si una fecha no lo cumple, te avisa.

Y cuando seas tú quien escribe el archivo, hay una forma que no se presta a dudas: año-mes-día con guiones, 2026-09-02. En la caja de arena, pandas y DuckDB la leyeron como fecha sin ninguna opción y con el mes correcto. Y cuando pandas escribe fechas en un CSV, por omisión las escribe así.

Pregúntale a tu Maestro cómo saber el orden de las fechas de un archivo que te mandaron.

En Excel

Excel también interpreta las fechas al abrir un CSV. Microsoft lo dice así: "Cuando Excel abre un archivo .csv, usa la configuración de formato de datos predeterminada actual para interpretar cómo se importa cada columna de datos", y pone justo este ejemplo: una columna que en el archivo viene en un orden mientras el formato predeterminado de Excel es otro. Su recomendación es importar el archivo indicando el formato de cada columna en vez de abrirlo con doble clic. Lo haces en el módulo 4.

La misma página de Conversión automática de datos que viste para los ceros tiene una opción para fechas, Convertir combinaciones de "tipo fecha" de letras continuas y números en una fecha, para casos como JAN1, que Excel convierte en el 1 de enero. Microsoft advierte que, aun con esa opción apagada, valores con un espacio, como 1 ENE, todavía se pueden tratar como fechas.

Cuidado: Revisa los meses, no solo que no haya error

Después de leer fechas, imprime qué meses o qué rango de fechas quedaron, con algo como ventas["fecha"].dt.month.value_counts(). Si el archivo es de septiembre y aparece febrero, el problema está en la lectura.

Inténtalo

Este programa suma las ventas de la sucursal por mes. Córrelo y lee los meses que salen. Luego dile a pandas el formato correcto.

Corre el programa: salen ventas en los meses 2, 3, 5, 7 y 11. Cambia la conversión de la fecha para que pandas lea día/mes/año. Ya quedó cuando salen solo septiembre (9) con 2410.50 y octubre (10) con 4185.25.

Corre el programa: salen ventas en los meses 2, 3, 5, 7 y 11. Cambia la conversión de la fecha para que pandas lea día/mes/año. Ya quedó cuando salen solo septiembre (9) con 2410.50 y octubre (10) con 4185.25.

Ejecuta tu código para ver lo que imprime y el valor de su última expresión. Cada ejecución empieza de nuevo.

Listo para ejecutar tu código.

Ejecuta tu código para ver su salida aquí.

Ejecútalo tú

Comprueba lo que sabes: Un proveedor te manda un archivo y la primera fecha es 03/04/2026. ¿Qué fecha es?