
METIS 2: limpiar los datos de un eclipse (y dejar por escrito lo que les has hecho)
En la primera entrada de METIS montamos un perfilador: subes un archivo CSV, y el programa te dice exactamente qué hay dentro —filas, columnas, tipos, valores que faltan, duplicados— y detecta los problemas típicos de un archivo español: el punto y coma como separador, la codificación de Excel, la coma decimal, las fechas que en realidad son texto.
Pero METIS solo detectaba. Te decía “esta columna son números escritos como texto” y ahí se quedaba. Arreglarlo era tu problema.
Esta entrada cierra ese hueco, y añade una segunda cosa que casi nadie enseña: la ficha de metadatos. Al final tendrás un ejercicio completo para clase, con datos de un evento que va a pasar de verdad y que se va a ver desde el patio del instituto.
El orden importa: primero arreglar, después documentar
METIS ahora hace dos cosas nuevas, y van en este orden:
- Aplica los arreglos que tú elijas y te devuelve el archivo limpio más un registro de cambios que dice exactamente qué se hizo y a cuántas filas afectó.
- Genera la ficha de metadatos del archivo ya limpio.
Ese orden no es casual. Una ficha del archivo sucio documentaría un estado que está a punto de desaparecer: no sirve para nada. La ficha describe el dato que vas a usar y a entregar.
Y hay una regla que no se toca: METIS no arregla nada por su cuenta. Detecta, propone, y decides tú. Un programa que “limpia solo” le quita al alumnado exactamente la parte que hay que aprender, que es decidir con criterio y asumir el coste de la decisión.
Los datos: el eclipse total del 2 de agosto de 2027
El 2 de agosto de 2027 hay un eclipse solar total, y la franja de totalidad pasa por el sur de España. Estepona está dentro, y resulta que es el punto de la Costa del Sol con más totalidad: 3 minutos y 36 segundos. Málaga capital, que está peor situada dentro de la franja, se queda en 1 minuto y 49 segundos.
Horas oficiales para Estepona, del Centro Nacional de Eclipses del Instituto Geográfico Nacional:
| Momento | Hora |
|---|---|
| C1 — empieza la fase parcial | 09:41 |
| C2 — empieza la totalidad | 10:46:11 |
| C3 — acaba la totalidad | 10:49:47 |
| C4 — acaba la fase parcial | 12:01 |
El archivo de ejemplo simula una estación de medida en el patio del instituto, tomando una medida por minuto entre las 10:18 y las 11:18: la hora central del fenómeno. Nueve columnas: fecha, hora, ocultación del disco solar, temperatura, humedad, iluminancia, nivel de luz, sensor y observaciones.
Un detalle que da para una pregunta de clase: la totalidad acaba a las 10:49:47, pero la fila de las 10:50 todavía marca 100,0 % de ocultación. No es un error. A las 10:50:00 han pasado 13 segundos desde que el Sol empezó a asomar, y la ocultación real es del 99,995 %, que redondeado a un decimal es 100,0. La columna miente por redondeo, no por equivocación, y quien mire solo esa columna se perderá que el Sol ya había vuelto.
Aviso de honestidad, y va por delante: las horas del eclipse son reales; las mediciones son sintéticas. Nadie ha medido esto todavía, porque el eclipse no ha ocurrido. Son datos generados por un programa con un modelo físico, y eso hay que decirlo en clase antes de nada. Cuando llegue el 2 de agosto de 2027 se podrán sustituir por mediciones de verdad, y ese es justo el plan.
El fenómeno que estos datos enseñan
Aquí está lo interesante, y es contraintuitivo:
La temperatura no alcanza su mínimo durante la totalidad. Lo alcanza varios minutos después.
La razón es la inercia térmica. El suelo y el aire no responden instantáneamente a que les quiten el Sol: siguen enfriándose mientras la energía que reciben sea menor que la que pierden, y eso continúa un rato después de que el Sol vuelva a asomar. Es el mismo motivo por el que la hora más calurosa del día no es el mediodía solar, sino un par de horas después.
En estos datos, la totalidad acaba a las 10:49:47 y la temperatura mínima cae a las 10:52. Tres minutos más tarde. Y durante la totalidad la temperatura todavía está bajando.
Eso no está colocado a mano: sale de integrar un modelo físico, y más abajo está el código.
Los defectos, plantados a propósito
El archivo trae ocho problemas metidos deliberadamente, porque un archivo limpio no enseña nada:
| Defecto | Qué es |
|---|---|
| Separador | Punto y coma, no coma |
| Codificación | cp1252, no UTF-8 |
| Coma decimal | En ocultación, temperatura y humedad |
| Fechas como texto | 02/08/2027 |
| Huecos | 4 en temperatura, 2 en humedad |
| Duplicados | 3 filas exactas (una de ellas repetida dos veces) |
| Columna vacía | observaciones, sin un solo valor |
| Columna constante | sensor, un único valor en todas las filas |
Y dos más que son los importantes, porque METIS no los resuelve:
- Cuatro valores de
iluminancia_luxcon la unidad pegada al número (1200 lux). METIS marca la columna, y acierta. Pero al convertirla, esos cuatro valores se pierden. - Una ocultación del 103,5 %. Es imposible por definición: no se puede cubrir más del 100 % de un disco. Ninguna regla de formato puede verlo, porque es un número perfectamente válido.
LA PRÁCTICA, de principio a fin
Esto es lo que hace el alumnado, paso por paso.
Paso 0. Mira el archivo antes de tocar nada (5 minutos)
Abre eclipse_estepona_2027.csv con un editor de texto. No con Excel.
Esto es importante y no es un capricho: Excel intenta “arreglar” el archivo al abrirlo, y lo hace en silencio. Te reinterpreta las fechas, te decide los tipos, y el problema original desaparece de la vista sin que te enteres. Para diagnosticar hay que ver el archivo tal como está.
Apunta en tu cuaderno, antes de usar ninguna herramienta:
- ¿Qué separa las columnas?
- ¿Ves algo raro en los números?
- ¿Se ven bien los acentos?
- ¿Hay líneas repetidas?
- ¿Hay huecos?
Guarda esa lista. Al final vas a compararla con lo que encontró METIS, y lo interesante van a ser las dos diferencias: lo que se te escapó, y lo que METIS marcó y tú no considerabas un problema.
Paso 1. Súbelo a METIS y lee los números (5 minutos)
Arrastra el archivo. Vas a ver dos bloques, y la diferencia entre ellos es el corazón de todo este proyecto:
- Arriba, “Lo que parece haber aquí”: la explicación en castellano, escrita por un modelo de inteligencia artificial que corre en el propio ordenador del instituto.
- Debajo, “Los números exactos”: la tabla que ha calculado Python.
Los números de abajo son exactos. La explicación de arriba es de una IA pequeña y puede equivocarse al interpretarlos. Está escrito en el pie de la página de forma permanente, y es la primera pregunta de la práctica:
¿Por qué está esa advertencia ahí? ¿Qué parte de esta pantalla te puedes creer sin comprobar, y qué parte no?
Paso 2. Decide, columna por columna (15 minutos)
Aparece una tabla nueva: “Ahora decides tú”. Cada columna con un problema tiene un desplegable con lo que se puede hacer, y METIS trae preseleccionado lo que probablemente haya que hacer, pero se puede cambiar todo.
Antes de darle al botón, contesta:
ocultacion_pct, temperatura_c, humedad_pct vienen con coma decimal. Si no las convertís, ¿qué es exactamente lo que no vais a poder hacer con ellas después?
fecha es texto. ¿Qué pasa si intentas ordenar por fecha una columna de texto? (Pista: prueba a ordenar alfabéticamente 02/08/2027 y 15/07/2027 y mira cuál va primero.)
sensor tiene un solo valor en las 64 filas. METIS avisa de que “no aporta nada para comparar”. ¿La borras? ¿Por qué sí o por qué no? Piénsalo dos veces: no aporta nada para comparar, pero ¿aporta algo para documentar?
observaciones está completamente vacía. Esta es más fácil, pero justifícalo.
Los huecos de temperatura_c son la decisión difícil, y hay cuatro caminos:
- Dejarlos como están.
- Borrar esas cuatro filas enteras.
- Rellenarlos con la media o la mediana de la columna.
- Rellenarlos con cero.
Los tres últimos tienen consecuencias distintas y ninguno es “el correcto”. Borrar filas pierde también la ocultación y la luz de esos minutos, que estaban bien medidas. Rellenar con la media inventa un dato que nadie midió. Y rellenar con cero, en una columna de temperaturas, mete un valor absurdo que va a estropear cualquier media.
Y aquí va la pregunta buena, la que hay que hacer en clase antes de que nadie toque nada:
En una serie temporal minuto a minuto, ¿tiene sentido rellenar el hueco de las 10:57 con la media de toda la hora? ¿O tendría más sentido mirar qué había a las 10:56 y a las 10:58?
La respuesta es que sí, tendría más sentido, y se llama interpolación. METIS todavía no la ofrece. Que el alumnado llegue a esa conclusión por su cuenta vale más que la función.
Paso 3. Lee el registro de cambios y busca lo que has perdido (10 minutos)
Pulsa “Limpiar y generar la ficha”. Sale un bloque nuevo: “Qué se le ha hecho a los datos”, con cada cambio en su línea. Las líneas en naranja son las que implican pérdida o alteración.
Entre ellas está esta:
ATENCION: 4 valor(es) de ‘iluminancia_lux’ no se han podido convertir a numero y ahora estan vacios. Valores distintos afectados: ‘43037 lux’, ‘15363 lux’, ‘1060 lux’, ‘41745 lux’
Esto es el momento importante de toda la práctica. Ha pasado lo siguiente:
METIS analizó la columna, vio que 60 de los 64 valores convertían a número —el 93,8 %, por encima de su umbral del 80 %— y la marcó como “números leídos como texto”. Y tenía razón. Pero los cuatro valores que no convertían tenían la unidad pegada, y al aplicar la conversión se han convertido en huecos.
Y fíjate dónde están los cuatro: a las 10:22, a las 10:37, a las 10:51 y a las 11:15. El de las 10:51 es un minuto después de que acabe la totalidad, justo en el momento en que la luz está volviendo. Has perdido el dato precisamente donde más falta hace, y sin querer.
Preguntas:
- ¿Cuántos datos has perdido sin querer?
- ¿Se ha equivocado METIS al marcar la columna? (No. Y esa es la parte incómoda.)
- ¿Qué deberías haber hecho antes de convertir?
- Si METIS no te lo hubiera dicho, ¿cómo te habrías enterado?
La respuesta a la cuarta es la lección: no te habrías enterado. Habrías tenido una columna con cuatro huecos nuevos y ninguna pista de por qué. Por eso el registro de cambios no es burocracia: es lo que hace que una limpieza sea reproducible y discutible por otra persona.
Si has elegido rellenar los huecos con la media o la mediana, hay otra línea naranja esperándote, y dice esto:
ATENCION: 4 hueco(s) de ‘temperatura_c’ rellenados con mediana (22.4). Esto NO es un dato medido: es un valor inventado para poder calcular. Hay que decirlo al presentar cualquier resultado que use esta columna.
Rellenar está marcado igual que borrar, a propósito. Y en realidad es más peligroso, porque no se nota: un hueco se ve; un valor inventado parece una medida.
Y fíjate en ese 22.4 entre paréntesis, porque esconde algo que casi nadie se plantea. METIS elimina los duplicados antes de calcular la mediana con la que rellena. Si lo hiciera en el otro orden, la mediana saldría 22,35, porque las tres filas repetidas contarían dos veces en el cálculo. Mismo archivo, mismas decisiones, número distinto según el orden en que se apliquen.
Es una diferencia de cinco centésimas y no cambia ninguna conclusión de esta práctica. Pero la pregunta que abre sí importa: ¿en qué otros sitios el orden de las operaciones cambia el resultado? Por eso el registro de cambios va en orden: no es una lista de lo que se hizo, es la receta para repetirlo.
Paso 4. Lee la ficha y busca lo imposible (10 minutos)
Debajo aparece la ficha de metadatos. Baja hasta la tabla de columnas y busca la fila de ocultacion_pct. Dice algo así:
ocultacion_pct| cuantitativa | continua | de 0.0 a 103.5, media … | 0 | [POR RELLENAR]
103,5 %.
Ninguna regla de formato ha detectado eso, y no podía: es un número decimal perfectamente válido, escrito correctamente, en una columna numérica. Solo lo caza quien entiende qué mide la columna. La ocultación es la fracción del disco solar que está cubierta: su máximo posible es 100, siempre, en cualquier eclipse del universo.
Preguntas:
- ¿Por qué no lo ha detectado METIS?
- ¿Qué otras columnas de este archivo tienen un máximo o un mínimo imposible por lo que significan? (
humedad_pctno puede pasar de 100.iluminancia_luxno puede ser negativa. Y una temperatura de 70 grados en el patio tampoco.) - ¿Qué haces con esa fila? ¿La borras, la corriges, la dejas y lo documentas?
- Y la que de verdad importa: ¿qué comprobación habría hecho falta que existiera?
Esa cuarta pregunta es una especificación de software escrita por el alumnado. Se llama validación de rango, y consiste en decirle al programa cuál es el mínimo y el máximo posibles de cada columna según lo que significa, no según su tipo de dato. Un programa no puede adivinarlo. Una persona que sabe de qué van los datos, sí.
Paso 5. Rellena la ficha (15 minutos)
Descarga la ficha con el botón. Es un archivo Markdown que se abre con cualquier editor de texto, y está lleno de huecos resaltados en amarillo: [POR RELLENAR].
Esos huecos son la mitad de los metadatos que un programa no puede saber. Python ha calculado las filas, las columnas, los tipos, los rangos y una huella del archivo. Lo demás lo tienes que poner tú:
- Qué se midió y para qué.
- Quién lo recogió, cuándo y dónde.
- Con qué instrumento.
- Qué unidad tiene cada columna. Esto es más importante de lo que parece:
24,5no significa nada.24,5 grados centígrados medidos a 1,5 m del suelo a la sombrasí. - Las limitaciones conocidas: qué no se puede concluir con estos datos.
Y hay un apartado que se llama “Decisiones que tiene que tomar una persona”, donde METIS pregunta lo que no puede resolver solo. La mejor de todas es esta:
nivel_luz: Decide si es NOMINAL (las categorías no tienen orden) u ORDINAL (si lo tienen, como frío < templado < cálido). El ordenador no puede saberlo: depende de lo que signifiquen las palabras.
Los tres valores de esa columna son normal, crepúsculo y oscuridad. ¿Tienen un orden? Evidentemente sí: cada uno es más oscuro que el anterior. Pero eso no está en los datos. Está en el significado de las palabras en castellano, y eso un programa no lo tiene. Por eso lo pregunta.
Y una segunda, que aparece si el archivo tuviera una columna de códigos: METIS avisa cuando una columna numérica parece un identificador y no una magnitud. Un DNI es un número entero y calcular su media no significa nada. Un código postal empieza a veces por cero, y en cuanto lo conviertes a número ese cero desaparece para siempre.
Paso 6. Ahora sí: busca el fenómeno (15 minutos)
Con el CSV limpio descargado, abre el archivo (ahora sí, en Excel o en una hoja de cálculo; la conversión ya está hecha y documentada) y contesta:
- ¿A qué hora es máxima la ocultación? (Cuidado: hay cuatro minutos seguidos marcando 100,0 %. ¿Cuál de los cuatro es “el máximo”?)
- ¿A qué hora es mínima la temperatura?
- ¿Coinciden?
- La totalidad acabó a las 10:49:47. ¿La temperatura mínima es antes o después de esa hora?
- ¿Cuántos grados bajó en total?
Vas a encontrar que la ocultación es máxima sobre las 10:47-10:48 y que la temperatura mínima llega a las 10:52: cinco minutos después del máximo y tres minutos después de que el Sol volviera a asomar.
Y entonces, la pregunta de física:
¿Por qué la temperatura sigue bajando cuando el Sol ya está volviendo?
La respuesta es la inercia térmica, y tiene una analogía que todo el mundo entiende: cuando apagas el fuego de una olla, el agua no se enfría de golpe. Sigue caliente un rato, y luego se va enfriando poco a poco. El suelo del patio es la olla.
Y hay un detalle extra, que es la mejor prueba de todo el ejercicio. Compara estas dos columnas minuto a minuto alrededor de la totalidad:
| Hora | Ocultación | Luz (lux) | Temperatura |
|---|---|---|---|
| 10:47 | 100,0 % | 3 | 20,8 |
| 10:48 | 100,0 % | 3 | 20,7 |
| 10:49 | 100,0 % | 3 | 20,5 |
| 10:50 | 100,0 % | 12 | 20,5 |
| 10:52 | 97,4 % | 2540 | 20,4 |
A las 10:50 la ocultación sigue marcando 100,0 % y la temperatura no ha tocado fondo todavía. Pero la luz ya se ha cuadruplicado: 12 lux frente a los 3 de la totalidad. La luz responde en el segundo en que el Sol asoma; la temperatura tarda tres minutos más.
Dos magnitudes medidas en el mismo sitio, en el mismo minuto y por el mismo aparato: una sin inercia y otra con ella. Ahí está la física entera del asunto en dos columnas de una hoja de cálculo.
Paso 7. Lo que se puede concluir, y lo que no (10 minutos)
La última parte, y la que más peso debería tener en la nota. Se entrega:
- El CSV limpio.
- La ficha de metadatos con todos los
[POR RELLENAR]rellenados. - El registro de cambios.
- Un párrafo con las conclusiones.
- Un párrafo con lo que NO se puede concluir.
Ejemplos de conclusiones que estos datos no sostienen, y que conviene que salgan en clase:
- “Los eclipses bajan la temperatura 4,6 grados.” No: este eclipse, en este sitio, este día, con esta nubosidad, bajó eso. Un dato, no una ley.
- “El retardo de la temperatura es de 3 minutos.” Depende del suelo, de la humedad, del viento y de la hora. Con una sola medición no hay ley.
- Cualquier cosa que use
temperatura_csin mencionar que cuatro de sus valores fueron rellenados a mano.
Cómo está hecho por dentro
Aquí la parte técnica. El código completo del perfilador está en la entrada anterior; esto son solo las piezas nuevas que merecen verse.
La ocultación se calcula, no se dibuja a ojo
La ocultación es la fracción del área del disco solar que está cubierta por la Luna. Geométricamente es el área de intersección de dos círculos, y tiene fórmula cerrada. El movimiento relativo se ajusta a las horas de contacto publicadas por el IGN, así que la curva pasa por 0 % en C1 y C4 y por 100 % entre C2 y C3, exactamente.
def ocultacion(segundos):
"""Fraccion del AREA del disco solar cubierta, entre 0 y 1.
Area de interseccion de dos circulos de radios 1 (Sol) y k (Luna) con sus
centros separados una distancia d."""
if segundos <= C1 or segundos >= C4:
return 0.0
if C2 <= segundos <= C3:
return 1.0
radio_sol = 1.0
radio_luna = K_LUNAR
distancia = separacion_centros(segundos)
if distancia >= radio_sol + radio_luna:
return 0.0
if distancia <= radio_luna - radio_sol:
return 1.0
# Area de la lente formada por dos circulos que se cortan.
cos_sol = (distancia**2 + radio_sol**2 - radio_luna**2) / (2 * distancia * radio_sol)
cos_luna = (distancia**2 + radio_luna**2 - radio_sol**2) / (2 * distancia * radio_luna)
cos_sol = max(-1.0, min(1.0, cos_sol))
cos_luna = max(-1.0, min(1.0, cos_luna))
angulo_sol = math.acos(cos_sol)
angulo_luna = math.acos(cos_luna)
area = (
radio_sol**2 * (angulo_sol - math.sin(2 * angulo_sol) / 2)
+ radio_luna**2 * (angulo_luna - math.sin(2 * angulo_luna) / 2)
)
return max(0.0, min(1.0, area / (math.pi * radio_sol**2)))
El retardo térmico sale de integrar, no de colocarlo
El modelo es una ecuación de relajación de primer orden, la misma que describe cómo se enfría un café:
dT/dt = (T_equilibrio(t) − T(t)) / τ
La temperatura de equilibrio baja con la ocultación, pero la temperatura real la persigue con retraso, y ese retraso lo marca τ, la constante de tiempo térmica. Se integra numéricamente con paso de 5 segundos:
def integrar_temperatura():
"""Integra el modelo termico y devuelve {segundo: temperatura}.
Se integra con paso fino desde bastante antes de la ventana de registro,
para que la temperatura ya este 'asentada' cuando empiecen las medidas."""
inicio = C1 - 600
temperatura = TEMPERATURA_INICIAL
serie = {}
segundos = float(inicio)
while segundos <= FIN_REGISTRO + PASO_INTEGRACION:
minutos_desde_inicio = (segundos - inicio) / 60.0
base = TEMPERATURA_INICIAL + TENDENCIA_POR_MINUTO * minutos_desde_inicio
equilibrio = base - CAIDA_MAXIMA * ocultacion(segundos)
# Euler explicito: paso pequeno frente a TAU, asi que es estable.
temperatura += (equilibrio - temperatura) / (TAU_MINUTOS * 60.0) * PASO_INTEGRACION
serie[int(round(segundos))] = temperatura
segundos += PASO_INTEGRACION
return serie
Comprobación importante, y es la razón por la que se puede llevar esto a clase con la cabeza alta: el mínimo cae después de la totalidad con cualquier combinación razonable de τ y de caída máxima. Se probó con τ entre 5 y 8 minutos y caídas entre 8 y 14 grados, y el mínimo salió siempre entre las 10:50 y las 10:52. El fenómeno está en el modelo, no en el ajuste de los parámetros.
Por el mismo motivo el ruido aleatorio de las mediciones es de solo ±0,06 grados: con un ruido mayor, el mínimo lo decidiría el azar y no la física, y entonces el fenómeno sería un artefacto. Cuando montas datos sintéticos para enseñar algo, esa comprobación no es opcional.
La detección de la pérdida
Esta es la función que hace visible lo que se pierde al convertir. La clave son las dos líneas del medio: se marca qué valores tenían algo escrito antes de convertir, y se cruza con los que han quedado vacíos después.
def _convertir_numero(serie, con_coma_decimal):
"""Convierte una serie de texto a numero. Devuelve (serie, no_convertidos).
no_convertidos es la mascara de los valores que TENIAN algo escrito y no
se han podido convertir: son los que se pierden."""
texto = serie.astype(str).str.strip()
tenia_valor = serie.notna() & (texto != "") & (texto.str.lower() != "nan")
if con_coma_decimal:
# Se quita el punto (separador de miles) y la coma pasa a punto.
preparado = texto.str.replace(".", "", regex=False).str.replace(",", ".", regex=False)
else:
preparado = texto
convertido = pd.to_numeric(preparado, errors="coerce")
no_convertidos = tenia_valor & convertido.isna()
return convertido, no_convertidos
Con esa máscara, el registro de cambios puede decir cuántos valores se han perdido y cuáles eran, en vez de dejar cuatro huecos nuevos sin explicación.
El aviso de “esto parece un identificador”
La clasificación cuantitativo/cualitativo no es la misma que el tipo de dato, y hay un caso que se cuela siempre: una columna de números que en realidad son códigos. METIS no lo decide —no puede—, pero levanta la mano:
def _parece_identificador(nombre, serie):
"""¿Esta columna numerica huele a identificador en vez de a magnitud?"""
nombre_normalizado = re.sub(r"[^a-záéíóúñ]", " ", nombre.lower())
palabras = set(nombre_normalizado.split())
if palabras & set(PISTAS_IDENTIFICADOR):
return True
# Todos los valores distintos y enteros: sospechoso de ser un codigo.
sin_nulos = serie.dropna()
if len(sin_nulos) > 1 and pd.api.types.is_integer_dtype(serie):
if serie.nunique(dropna=True) == len(sin_nulos):
return True
return False
Dos pistas: que el nombre de la columna suene a código, o que todos los valores sean enteros y distintos. Ninguna de las dos es concluyente, y por eso el aviso dice “confírmalo tú” en vez de cambiar la clasificación por su cuenta.
Dos cosas que aprendimos montándolo
Los acentos y el BOM. El CSV limpio salía en UTF-8 sin BOM, y Excel en Windows en español abre eso como si fuera cp1252: crepúsculo se veía crepúsculo. El arreglo es poner un BOM delante del archivo que se descarga, y entonces Excel detecta UTF-8 y los acentos salen bien. Es una línea de código y media hora de desconcierto. La ficha en Markdown va sin BOM, porque ahí el BOM puede aparecer como un carácter raro en algunos visores.
El mínimo plano. El primer ajuste del modelo daba un mínimo de temperatura que se extendía seis minutos con solo 0,1 grados de diferencia entre ellos: con el ruido de medición, el mínimo lo decidía el azar. Hubo que medirlo, verlo, y volver a ajustar hasta que el mínimo lo pusiera el modelo. Un dato sintético que “casualmente” enseña lo que quieres enseñar no vale: hay que comprobar que lo enseña por construcción.
Lo que METIS sigue sin hacer
- No ejecuta código generado por el modelo. Ni
eval, niexec, ni subproceso. El modelo no escribe código en ningún punto de la aplicación, y no lo hará. - No interpola. Rellenar el hueco de las 10:57 con lo que había a las 10:56 y a las 10:58 tiene mucho más sentido que rellenarlo con la media de la hora, en una serie temporal. No está hecho a propósito: que el alumnado llegue a esa conclusión es parte del ejercicio.
- No valida rangos. No sabe que una ocultación no puede pasar del 100 %. Sabrá lo que se le diga, cuando se le diga, y eso también es material de clase.
- No hace gráficas. Es el paso siguiente.
El paso siguiente
Visualización: un catálogo cerrado de gráficas, con el código escrito de antemano y no improvisado por la IA. Y con estos datos, la primera gráfica se cae sola: la temperatura y la ocultación en el mismo eje de tiempo, para que el desfase entre las dos curvas se vea de un golpe en vez de tener que buscarlo en una tabla.
Y con ella, la pregunta que abre la entrada siguiente: si la misma verdad se puede dibujar de varias maneras, ¿quién decide cuál cuenta la historia correcta?




Slug: metis-2-limpiar-datos-eclipse-2027-metadatos
Extracto: Segunda entrega de METIS: la herramienta pasa de detectar problemas a arreglarlos, con un registro de cambios que hace visible lo que se pierde, y genera la ficha de metadatos del archivo limpio. Con una práctica completa de principio a fin sobre datos del eclipse total del 2 de agosto de 2027 en Estepona.
Palabras clave: METIS, ciencia de datos, curación de datos, metadatos, eclipse 2027, Estepona, inercia térmica, pandas, Python, IA local, CDYPC, Bachillerato, IES Monterroso, alfabetización de datos



