Saltar al contenido

lección 2

Día 1 (tarde) — Primer contacto con los datos

Ocho ficheros de cuatro canales distintos en una carpeta compartida. Cárgalos con Pandas, mira qué hay antes de calcular nada (forma, tipos, nulos, grafías) y entiende el modelo: el pedido en el centro, con marca, cocina y canal colgando, sus líneas que dicen qué se cocinó y sus incidencias que dicen lo que costó cuando salió mal. Sin limpiar todavía: hoy solo te enteras de a qué te enfrentas.

50 min

### Ocho ficheros, cuatro canales y ni un diccionario

A media mañana, Gonzalo te deja en la carpeta compartida ocho ficheros CSV con las exportaciones de los últimos quince meses, y un mensaje con el titular ya escrito antes de que hayas abierto ninguno.

1Gonzalo Prats 10:34
2Buenas! Te dejo en la carpeta las exportaciones de los ultimos ~15 meses:
3cocinas, marcas, productos, pedidos, lineas de pedido, canales, incidencias y clientes
4Te adelanto el titular: La Brasa Burger es la numero UNO
5Mas pedidos y mas facturacion que ninguna, de calle. Lo tengo clarisimo
6Si me confirmas el GMV por ciudad ya me vale para llevar la expansion al comite del viernes
7Corre un poco que quiero aprobar las tres cocinas este trimestre

El encargo llega con la conclusión ya escrita: tu trabajo es comprobarla, no repetirla

Ya has vivido esta escena cuatro veces: alguien con prisa te pasa unos ficheros y un titular, y espera que confirmes lo que ya cree. La diferencia con tus encargos anteriores es que aquí no vas a poder confirmar nada con lo que Gonzalo pide. El GMV por ciudad se calcula en dos líneas, sí, pero no responde la pregunta de Clara —cuánto margen deja cada marca—, y responderla exige juntar cinco de estos ocho ficheros por sus identificadores. Antes de cruzar nada, hay una regla que ya conoces y que hoy toca aplicar entera: no se calcula sobre datos que no has mirado. Un fichero que no has explorado es un fichero que te va a sorprender en el peor momento, normalmente el jueves por la tarde con Clara delante.

Explorar antes de calcular no es una manía de perfeccionista: es la diferencia entre un número que aguanta y uno que se cae en la primera pregunta. Cuando cargas un fichero, quieres saber cuatro cosas antes de nada. Cuántas filas y columnas tiene (su forma), para hacerte una idea del tamaño y del negocio. De qué tipo es cada columna, porque una fecha o un importe que salen como texto esconden suciedad. Cuántos huecos hay en cada columna, porque un hueco puede ser un error o puede significar algo. Y qué valores distintos toma cada campo de texto, porque ahí es donde se ve si «entregado» está escrito de diez maneras. Esas cuatro miradas son tu chequeo de entrada, y se hacen con cuatro herramientas de Pandas que ya has usado: shape, dtypes, isnull y value_counts.

### Lo que los números te cuentan del negocio antes de calcular nada

Hay una habilidad que se aprende con los años y que puedes empezar a practicar hoy: leer el negocio en las dimensiones de los ficheros, antes de calcular una sola métrica. Cuando veas que hay unos 150.000 pedidos y 360.000 líneas, ya sabes que cada pedido lleva de media más de dos platos, lo cual encaja con combos y con pedidos para varias personas. Cuando veas 10 cocinas y 5 marcas, entiendes el modelo de negocio de un vistazo: pocas cocinas, cada una despachando varias marcas. Cuando veas 60.000 clientes pero 150.000 pedidos, y encima un tercio sin cliente asociado, deduces que mucha gente pide una vez como invitado y no vuelve, o que los clientes registrados repiten. Los números grandes cuentan la historia del negocio; solo hay que saber escucharlos.

Esta lectura no es un juego: te da las expectativas contra las que vas a contrastar todo lo que calcules después. Si esperas que cada pedido tenga un par de líneas y de repente ves un pedido con cincuenta, sabes que algo raro pasa (un duplicado, un error). Si esperas que las cinco marcas repartan los pedidos de forma desigual y ves que una tiene el 34%, no te sorprende, pero anotas que es la grande. Tener un modelo mental del negocio antes de calcular es lo que te permite detectar cuándo un resultado es imposible. Un analista sin ese modelo acepta cualquier número que le devuelva la consulta; uno con él dice «esto no puede ser» y encuentra el error antes de que llegue al informe.

### El modelo de datos: el pedido en el centro

Antes de mirar fichero a fichero, conviene tener en la cabeza cómo encajan las ocho tablas, porque todo el análisis de la semana se apoya en cruzarlas bien. El modelo de RutaSabor es el típico de un negocio de reparto, y tiene una forma muy clara: el pedido en el centro, y todo lo demás colgando de él. Cada pedido dice de qué marca es (marca_id), en qué cocina se hizo (cocina_id), por qué canal entró (canal_id) y, si el cliente estaba registrado, quién lo pidió (cliente_id, que puede estar vacío porque fue un invitado). El importe que pagó el cliente vive en el propio pedido. Pero para saber qué se cocinó y cuánto costó, hay que bajar a las líneas del pedido: cada línea es un plato de ese pedido, con su cantidad y su precio, y cada plato apunta a un producto, que es la receta con su coste de ingredientes. Y para saber si el pedido salió mal, hay que mirar las incidencias, que cuelgan del pedido pero solo existen cuando algo falló.

Ocho tablas, un centro: el pedido. El margen de contribución se construye juntando el importe con los tres costes que cuelgan de líneas+productos, canales e incidencias

Fíjate en la asimetría del modelo, porque es la clave de todo el caso. Las cuatro dimensiones de arriba (cocinas, marcas, canales, clientes) contestan «de quién es este pedido»: son etiquetas. Las tres fuentes de abajo (líneas+productos, canales e incidencias) contestan «cuánto cuesta este pedido»: son costes. El importe que se cobra está en el pedido, a la vista, en el panel. Los tres costes están repartidos en tres tablas distintas que ningún panel junta. Por eso el margen no se ve en Metabase: para calcularlo hay que ir a buscar cada coste a su tabla y restarlo. Ese es literalmente tu trabajo esta semana, y por eso el jueves aparece el hallazgo: porque nadie había ido a buscar esos tres costes a la vez.

Consejo de senior: cuando te den un modelo de datos nuevo, no memorices las tablas una a una; busca cuál es la tabla central (la que tiene un identificador que aparece en muchas otras) y pregúntate qué cuelga de ella como etiqueta y qué cuelga como medida. En casi todos los negocios hay una tabla de «hechos» en el centro (aquí, el pedido) y unas tablas de contexto alrededor. Si entiendes esa forma, sabes cruzar sin memorizar, y sabes de antemano qué join necesitas para cada pregunta.

Una última cosa antes de cargar los ficheros, y es la más importante de la lección. Nacho, tu buddy, ya ha sufrido estas exportaciones y te suelta por Slack los avisos que nadie escucha nunca. Léelos con atención, porque cada uno es una decisión que vas a tener que tomar mañana y un error caro si la tomas mal.

1Nacho Ferrer 10:41
2jaja bienvenido/a a las exportaciones de cuatro marketplaces distintos
3la fecha en 3 formatos (una trae el mes en INGLES, "12 Mar 2024", cuidado al parsear),
4importe con € y coma, la comision como "30 %" en texto, y las categorias cada una como le suena
5tres avisos que nadie escucha:
61) el webhook de Glovo a veces manda el MISMO pedido dos veces en segundos.
7 dedup por pedido_id antes de contar nada
82) el cliente_id vacio NO es un nulo que falte: es un pedido de INVITADO (sin cuenta).
9 son pedidos reales, NO los tires
103) que un pedido no aparezca en incidencias NO es que falte el dato: es que fue bien,
11 coste de incidencia = 0. no lo confundas con desconocido
12hoy solo enterate de que hay, manana lo limpias

Los tres avisos de Nacho son las tres decisiones de peso de la semana: duplicados, invitados y ausencia de incidencia

Hoy NO se limpia nada. Es tentador, en cuanto ves que las fechas son texto y el importe trae el símbolo del euro, ponerse a arreglarlo. Pero limpiar sin haber explorado primero es limpiar a ciegas: te arriesgas a normalizar una columna sin saber cuántas grafías tiene, o a tirar filas que resultan ser válidas. El objetivo de hoy es hacer el inventario completo del desastre. Mañana, con el mapa entero delante, se limpia con criterio y de una vez.

Consejo de senior: cuando Nacho o cualquier compañero veterano te suelte tres avisos por Slack como los de hoy, cópialos en un sitio y trátalos como oro. Ese conocimiento —el webhook duplica, el invitado no es un error, la ausencia de incidencia es coste cero— no está escrito en ningún diccionario de datos porque nadie lo ha documentado; vive en la cabeza de quien ya se dio el golpe. Un aviso de un veterano te ahorra un día de depurar un número que no cuadra. La diferencia entre un analista que sufre cada dataset nuevo y uno que fluye es, muchas veces, simplemente que el segundo escuchó a quien ya lo había sufrido.

### A mirar los ficheros

Los ejercicios que siguen son tu chequeo de entrada. No hay que calcular nada de negocio todavía: hay que abrir cada fichero y anotar qué hay dentro, en qué estado viene y qué te va a tocar arreglar. Vas a ver de un vistazo la proporción del negocio (muchísimos pedidos y líneas, pocas cocinas y marcas), qué columnas vienen como texto cuando deberían ser números o fechas, dónde hay huecos con significado, y el tamaño real del problema de las grafías. Con eso montarás mañana la lista de limpieza.

Los ocho ficheros y su tamaño: las tablas de hechos (pedidos y líneas) son enormes; las dimensiones (cocinas, marcas, canales) son pequeñas. La proporción ya dibuja el negocio antes de calcular nada

### Por qué los datos vienen sucios de cuatro sitios a la vez

Puede parecer descuido que las fechas vengan en tres formatos y los importes con el símbolo del euro pegado, pero no lo es: es la consecuencia inevitable de un negocio que vende por cuatro canales que no se hablan entre sí. Glovo, Uber Eats, Just Eat y la app propia son cuatro empresas distintas, con cuatro equipos de ingeniería distintos, que decidieron por su cuenta cómo exportar un pedido. Uno pone la fecha en formato internacional ISO, otro a la española, otro con el mes en inglés porque su plataforma nació en Londres. Uno manda el importe como número limpio, otro como texto con el símbolo de moneda para que se lea bonito en un informe. Cuando RutaSabor junta los pedidos de los cuatro en su almacén, hereda las cuatro maneras de escribir cada cosa. No hay un culpable: hay cuatro fuentes que nunca se pusieron de acuerdo, y un analista en medio que tiene que reconciliarlas.

Esta es una de las verdades menos glamurosas y más ciertas del oficio: en cuanto los datos vienen de más de una fuente, vienen sucios, y no por negligencia sino por naturaleza. Cada sistema fue diseñado para resolver su problema, no para encajar con los demás. El torniquete de un gimnasio, la pasarela de pagos de una tienda, el webhook de un marketplace: cada uno habla su idioma. El trabajo de limpiar y reconciliar no es un castigo ni un trámite previo al análisis de verdad; es parte del análisis, y muchas veces la parte donde más se decide. Una fecha mal parseada o una categoría sin normalizar no es un detalle estético: es un número final equivocado que nadie detecta hasta que ya se ha tomado una decisión con él.

Por eso el orden importa. Hoy exploras, mañana limpias, y solo después calculas. Saltarse la exploración para ir directo a calcular es la tentación de todo junior con prisa, y el origen de la mitad de los errores caros del oficio. Cuando exploras primero, llegas a la limpieza con la lista completa de lo que hay que arreglar; cuando limpias primero, arreglas lo que ves y te comen los duplicados que no viste. Esta lección es, en el fondo, un ejercicio de paciencia: resistir las ganas de calcular hasta saber exactamente con qué estás calculando.

Consejo de senior: dedica siempre los primeros minutos con un dataset nuevo a mirarlo sin objetivo, como quien pasea por una casa antes de decidir dónde poner los muebles. Abre cada tabla, mira sus primeras y últimas filas, cuenta sus valores distintos, busca los huecos. No estás buscando nada concreto todavía; estás construyendo una intuición de qué es normal y qué es raro en estos datos. Esa intuición es la que, tres días después, te hará decir «este número no puede ser» cuando a otro le pasaría desapercibido. El tiempo que inviertes en conocer los datos no se resta del análisis: se multiplica en él.

Hay una actitud que conviene traer a la exploración, y es la del detective, no la del turista. El turista mira los datos y dice «vale, hay pedidos, marcas, canales». El detective mira y pregunta: ¿por qué hay 1.500 pedidos de más si el identificador debería ser único? ¿Por qué un tercio de los pedidos no tiene cliente? ¿Por qué la ciudad está escrita de nueve maneras? Cada rareza es una pista, y cada pista lleva a una decisión de limpieza o a un descubrimiento. La diferencia entre un analista que encuentra el hallazgo del jueves y uno que no, muchas veces se decide aquí, el lunes, en si mira los datos con curiosidad o con prisa. La exploración recompensa a quien se hace preguntas sobre lo que ve.

### El chequeo de entrada: cuatro miradas a cada tabla

La exploración de datos, lo que en el oficio se llama análisis exploratorio o EDA por sus siglas en inglés, no es un ritual vago de «mirar los datos»: tiene un método concreto que se repite tabla a tabla. Son cuatro miradas, y conviene hacerlas siempre en el mismo orden para no dejarte nada. La primera es la forma: cuántas filas y columnas, para hacerte una idea del tamaño y de si el fichero es lo que esperabas. La segunda son los tipos: de qué tipo es cada columna, porque una fecha o un importe que salen como texto son una bandera roja de suciedad. La tercera son los huecos: cuántos valores faltan en cada columna, y sobre todo si esos huecos son errores o significan algo. Y la cuarta son las grafías: cuántos valores distintos toma cada columna de texto, para cazar las categorías escritas de mil maneras.

Las cuatro miradas del chequeo de entrada, con su herramienta de Pandas. Hacerlas siempre en el mismo orden, tabla a tabla, es lo que garantiza que no se te escape ninguna suciedad

Estas cuatro miradas no cambian de un dataset a otro: son el chequeo de entrada de cualquier fichero, en cualquier proyecto, para siempre. Un analista experimentado las hace casi sin pensar, en un par de minutos, y sale de ellas con la lista de limpieza escrita. Fíjate en que ninguna calcula nada de negocio: no hay márgenes, ni marcas, ni cuotas. Es a propósito. Mezclar la exploración con el cálculo es lo que lleva a construir un análisis sobre datos que no entiendes. Primero conoces el material, después construyes con él. Los ejercicios que siguen son, literalmente, estas cuatro miradas aplicadas a los ficheros de RutaSabor.

Ya sabes qué tablas hay y cómo encajan. Vamos a abrirlas y a mirar de qué están hechas, empezando por lo más básico: cuántas filas y columnas tiene cada una.

Regístrate para guardar tu progreso.