Resumen de Introducción a Apache Spark y Big Data

Introducción a Apache Spark y Big Data: Guía Completa

Introducción

El análisis de datos es una disciplina clave para convertir información en decisiones fundamentadas. En este material aplicaremos técnicas prácticas sobre un conjunto real: datos de contagios de COVID-19 en Corea del Sur (conjunto DS4C, NeurIPS 2020). Veremos cómo identificar las ciudades con más casos y cómo preparar un DataFrame de pacientes para un flujo ETL reproducible.

Definición: El análisis de datos es el proceso de inspeccionar, limpiar y modelar datos con el objetivo de descubrir información útil y apoyar la toma de decisiones.

Objetivos de la lección

  1. Identificar las tres ciudades con más casos confirmados a partir del archivo CSV Case.
  2. Crear y procesar un DataFrame sin duplicados a partir de PatientInfo con filtros específicos y escribir el resultado en formato Parquet partitionado.

Datos y archivos usados

  • Case.csv: registros de casos reportados (provincia, ciudad, fecha, etc.).
  • PatientInfo.csv: información demográfica y clínica de pacientes (incluye infected_by, gender, released_date, deceased_date, provincia, etc.).

Parte A — Encontrar las tres ciudades con más casos confirmados

Enfoque conceptual

  1. Agrupar por provincia y ciudad.
  2. Contar casos confirmados por ciudad.
  3. Ordenar de mayor a menor y seleccionar las tres primeras filas.

Definición: Agrupación es la operación que consolida filas según una o más columnas para aplicar una función de agregación (por ejemplo, contar).

Resultado esperado

La salida debe ser una tabla con exactamente tres filas y tres columnas: province, city, confirmed_cases. Debe contener únicamente las tres ciudades con mayor número de casos confirmados y ningún otro valor.

Ejemplo de pasos (pseudocódigo conceptual):

  1. Leer Case.csv.
  2. Agrupar por province, city y contar los registros como confirmed_cases.
  3. Ordenar por confirmed_cases descendente.
  4. Tomar las primeras 3 filas.

Ejemplo ilustrativo (resultado ficticio)

provincecityconfirmed_cases
Provincia ACiudad X1234
Provincia BCiudad Y987
Provincia CCiudad Z876
💡 ¿Sabías que?Fun fact: ¿Sabías que las primeras etapas del mapeo de contagios se basan en análisis de series temporales y grafos para identificar super-difusores y clústeres de transmisión?

Parte B — Procesamiento del archivo PatientInfo

Requisitos paso a paso

  1. Crear un DataFrame a partir de PatientInfo.csv.
  2. Eliminar pacientes duplicados (definir duplicado según el identificador único del paciente).
  3. Contar cuántos pacientes tienen informado el campo infected_by (no nulo).
  4. Filtrar únicamente los pacientes que tienen infected_by informado.
  5. A partir de este subconjunto, obtener sólo las pacientes femeninas (gender = "female" o equivalente en el dataset).
  6. El resultado no debe contener las columnas released_date ni deceased_date.
  7. Establecer el número de particiones del DataFrame resultante en dos.
  8. Escribir el DataFrame en formato Parquet partitionado por province con modo overwrite.

Definición: Particionar un conjunto de datos significa organizar los archivos de salida en subcarpetas según una o más columnas; esto mejora el acceso y la metainformación para consultas posteriores.

Consideraciones prácticas

  • Duplicados: identificar la columna o combinación de columnas que funciona como llave primaria (por ejemplo, patient_id).
  • infected_by: contar entradas no nulas para conocer cuántos pacientes tienen dato de fuente de infección.
  • Filtrado por género: asegurarse de normalizar valores como F, Female, female antes de filtrar.
  • Columnas a eliminar: eliminar released_date, deceased_date antes de escribir.
  • Particiones: al re-particionar a 2 particiones, se controla la paralelización y el tamaño de los archivos de salida.

Pseudocódigo conceptual (pasos resumidos)

  1. Leer PatientInfo.csv en un DataFrame.
  2. Drop duplicates por patient_id.
  3. Contar filas
Regístrate para el resumen completo
TarjetasTest de conocimientosResumenPodcastMapa mental
Empezar gratis

¿Ya tienes cuenta? Iniciar sesión

Análisis de datos COVID-19

Klíčové pojmy: Agrupar por provincia y ciudad y contar casos., Ordenar descendentemente y seleccionar exactamente 3 ciudades., Eliminar duplicados usando un identificador único., Contar pacientes con campo infected_by no nulo., Filtrar pacientes con infected_by informado., Seleccionar sólo pacientes femeninos tras el filtro anterior., Eliminar columnas released_date y deceased_date antes de escribir., Reparticionar a 2 particiones y escribir Parquet partitioned by province en modo overwrite

## Introducción El análisis de datos es una disciplina clave para convertir información en decisiones fundamentadas. En este material aplicaremos técnicas prácticas sobre un conjunto real: datos de contagios de COVID-19 en Corea del Sur (conjunto DS4C, NeurIPS 2020). Veremos cómo identificar las ciudades con más casos y cómo preparar un DataFrame de pacientes para un flujo ETL reproducible. > Definición: El análisis de datos es el proceso de inspeccionar, limpiar y modelar datos con el objetivo de descubrir información útil y apoyar la toma de decisiones. ## Objetivos de la lección 1. Identificar las tres ciudades con más casos confirmados a partir del archivo CSV `Case`. 2. Crear y procesar un DataFrame sin duplicados a partir de `PatientInfo` con filtros específicos y escribir el resultado en formato Parquet partitionado. ## Datos y archivos usados - `Case.csv`: registros de casos reportados (provincia, ciudad, fecha, etc.). - `PatientInfo.csv`: información demográfica y clínica de pacientes (incluye `infected_by`, `gender`, `released_date`, `deceased_date`, provincia, etc.). ## Parte A — Encontrar las tres ciudades con más casos confirmados ### Enfoque conceptual 1. Agrupar por provincia y ciudad. 2. Contar casos confirmados por ciudad. 3. Ordenar de mayor a menor y seleccionar las tres primeras filas. > Definición: Agrupación es la operación que consolida filas según una o más columnas para aplicar una función de agregación (por ejemplo, contar). ### Resultado esperado La salida debe ser una tabla con exactamente tres filas y tres columnas: `province`, `city`, `confirmed_cases`. Debe contener únicamente las tres ciudades con mayor número de casos confirmados y ningún otro valor. Ejemplo de pasos (pseudocódigo conceptual): 1. Leer `Case.csv`. 2. Agrupar por `province`, `city` y contar los registros como `confirmed_cases`. 3. Ordenar por `confirmed_cases` descendente. 4. Tomar las primeras 3 filas. ### Ejemplo ilustrativo (resultado ficticio) | province | city | confirmed_cases | | --- | --- | --- | | Provincia A | Ciudad X | 1234 | | Provincia B | Ciudad Y | 987 | | Provincia C | Ciudad Z | 876 | Fun fact: ¿Sabías que las primeras etapas del mapeo de contagios se basan en análisis de series temporales y grafos para identificar super-difusores y clústeres de transmisión? ## Parte B — Procesamiento del archivo PatientInfo ### Requisitos paso a paso 1. Crear un DataFrame a partir de `PatientInfo.csv`. 2. Eliminar pacientes duplicados (definir duplicado según el identificador único del paciente). 3. Contar cuántos pacientes tienen informado el campo `infected_by` (no nulo). 4. Filtrar únicamente los pacientes que tienen `infected_by` informado. 5. A partir de este subconjunto, obtener sólo las pacientes femeninas (`gender` = "female" o equivalente en el dataset). 6. El resultado no debe contener las columnas `released_date` ni `deceased_date`. 7. Establecer el número de particiones del DataFrame resultante en dos. 8. Escribir el DataFrame en formato Parquet partitionado por `province` con modo `overwrite`. > Definición: Particionar un conjunto de datos significa organizar los archivos de salida en subcarpetas según una o más columnas; esto mejora el acceso y la metainformación para consultas posteriores. ### Consideraciones prácticas - Duplicados: identificar la columna o combinación de columnas que funciona como llave primaria (por ejemplo, `patient_id`). - `infected_by`: contar entradas no nulas para conocer cuántos pacientes tienen dato de fuente de infección. - Filtrado por género: asegurarse de normalizar valores como `F`, `Female`, `female` antes de filtrar. - Columnas a eliminar: eliminar `released_date`, `deceased_date` antes de escribir. - Particiones: al re-particionar a 2 particiones, se controla la paralelización y el tamaño de los archivos de salida. ### Pseudocódigo conceptual (pasos resumidos) 1. Leer `PatientInfo.csv` en un DataFrame. 2. Drop duplicates por `patient_id`. 3. Contar filas