Big Data 24_3
- Borja Antón |
- Daniel Martínez García |
Course Information
Curso Big Data Science
¿Qué hace único a nuestro programa?
- Garantía de Prácticas Profesionales: Al finalizar nuestro programa, aquellos estudiantes que lo deseen tendrán la oportunidad de realizar prácticas profesionales. Grupo Atrium se compromete a encontrar una empresa adecuada donde puedan aplicar lo aprendido, facilitando así su entrada al mundo laboral.
- Soporte Diario en Discord: De lunes a viernes, entre las 17:00 y las 19:00 horas, un docente estará disponible exclusivamente en Discord para resolver tus dudas en tiempo real. Este apoyo es extendido a la realización de ejercicios y a la clarificación de conceptos discutidos en clase.
- Enfoque 100% Práctico: Adoptamos la filosofía "Learning by doing" a lo largo de nuestro programa. Aquí, no encontrarás exámenes teóricos; tu evaluación se basará en la realización de ejercicios prácticos avanzados, diseñados para emular los desafíos que encontrarías en el ámbito laboral real.
- Desafíos Basados en Datos Reales: Se presentarán a los estudiantes desafíos estimulantes basados en situaciones reales, cuya superación es requisito para la aprobación. Ejemplos incluyen:
-
- Como sysadmin de Linux, desarrollar un script de bash que opere en segundo plano ejecutando tareas de mantenimiento del sistema.
-
- Realizar un análisis detallado de los datos de pasajeros del Titanic usando Python, creando estadísticas avanzadas y visualizaciones coloridas. Identificar las variables que más influyen en la supervivencia de los pasajeros y entrenar un modelo de inteligencia artificial para predecir los resultados.
-
- En el contexto de una tienda de discos, manipular extensamente la base de datos SQL para actualizar información sobre artistas, álbumes y canciones, utilizando Python para ejecutar consultas y modificaciones complejas.
-
- Para una cadena de restaurantes con datos en MongoDB, desarrollar un software en Python que permita visualizar la ubicación de cada restaurante en un mapa, generar gráficos por barrio y tipo de cocina, incorporar nuevos establecimientos a la cadena y calcular la puntuación media de las reseñas entre otras muchas tareas.
-
- Trabajar con datos de una aseguradora de salud en EE.UU., manejando grandes volúmenes de datos de pacientes que, por su gran volumen, requieren de un sistema de cómputo distribuido (Spark) para su análisis. El objetivo es determinar la prima de seguro óptima para cada paciente, utilizando técnicas de cómputo y aprendizaje automático distribuido.
¿Qué aprenderás?
Python para Data Science
Te familiarizarás con los conceptos y herramientas fundamentales del Data Science y adquirirás los conocimientos de programación con Python esenciales para empezar con el curso.
Aprenderás los fundamentos del lenguaje, las estructuras de programación, y el uso de distintas librerías, que te permitirán abordar el resto del programa. También comenzarás a utilizar entornos de desarrollo integrado como Pycharm o Jupyter Lab.
GNU/Linux
Te familiarizarás con la administración de sistemas Linux para poder desplegar tus proyectos Big Data en producción en la Cloud.
También se te formará en los fundamentos de la administración y el uso del sistema operativo GNU/Linux y como desplegar instancias en Cloud de Debian, Ubuntu, CentOS… para poner en producción tus proyectos de Data Big Data.
Data Analytics
Te convertirás en un Data Analyst que será capaz de acceder a datos, explorarlos y prepararlos, y visualizarlos con diferentes herramientas, para sacar conclusiones sobre los datos.
Comenzarás aprendiendo librerías como Numpy y Pandas, que te permitirán analizar y modificar los datos, y explorar sus características. Además, te familiarizaras con los conceptos estadísticos que te ayudarán a interpretar y también modificar los datos. Posteriormente visualizarás esos datos con librerías de Python como Matplotlib y Seaborn. Abordarás un proyecto de Análisis Exploratorio de Datos (EDA). Realizarás el análisis y extraerás conclusiones sobre los mismos y lo expondrás utilizando capacidades de visualización y storytelling.
Big Data
Aprenderás las tecnologías más relevantes a nivel empresarial del ecosistema Big Data
Veremos las herramientas más importantes del ecosistema Big Data, tanto de manera teórica como práctica. Adéntrate en el procesamiento distribuido montando y administrando clústeres de Hadoop/Spark y programando en PySpark. Aprende cómo funcionan las Bases de Datos NoSQL y descubre como a utilizar y administrar las más usadas, como MongoDB.
Iniciación al Machine Learning
Aprenderás las bases de lo que es el aprendizaje automático
Como experto en Big Data en muchos equipos tu misión será ayudar a los expertos en Machine Learning a realizar los proyectos, o incluso, con el tiempo, quizás convertirte tú en un experto en Machine Learning. Por ello, en este módulo se explican las bases de qué es el Machine Learning, que tipos hay, para qué sirve y se enseñan algunos modelos simples y útiles a modo de iniciación en esta disciplina.
Al acabar serás capaz de:
- Tener las bases necesarias del lenguaje de programación Python, así como dominar las buenas prácticas de programación. Saber manejar entornos de desarrollo integrados (IDEs) para su posterior aplicación en la creación de programas informáticos.
- Conocer los fundamentos de administración de sistemas GNU/Linux y puesta en producción de ecosistemas Big Data distribuidos en estos sistemas.
- Utilizar Python para preprocesar, tratar y analizar datos, creando reportes con detallados análisis exploratorios de datos (EDA) y llamativas visualizaciones.
- Conocer funcionamiento y uso de las Bases de Datos NoSQL como MongoDB.
- Conocer las formas de procesamiento/almacenamiento de datos a gran escala. Ecosistema Hadoop (HDFS/YARN) y Spark.
- Aprender a desarrollar sistemas de procesamiento y análisis distribuido de datos mediante PySpark.
- Conocer los fundamentos del Machine Learning.
Temario
1) Módulo 1: Introducción a los sistemas Informáticos y tecnologías Big Data (6 sesiones)
- Principales componentes de un sistema informático. Sistemas Operativos, para que sirven, que tipos hay y cómo funcionan…
- Introducción a GNU/Linux
- ¿Qué es una distribución GNU/Linux?
- Entornos gráficos de escritorio: GNOME, KDE, XFCE…
- ¿Qué es una Shell?: Introducción a Bash (Bourne-again Shell)
- Cómo instalar y configurar GNU/Linux: Máquina virtual vs Dual Boot vs Cloud
- ¿Qué es un repositorio? ¿Qué es un gestor de paquetes? Nuestros primeros pasos con apt.
- Directorios clave del sistema: /home /bin /lib /dev…
- Sistemas de archivos y permisos
- GNU/Linux Avanzado
- Comandos para navegar por el sistema de archivos: pwd, ls, cd…
- Cómo concatenar comandos con && y ;
- Cómo acceder a los manuales y las ayudas integradas en la Shell
- Ver y editar archivos: head, tail, cat, less, nano…
- Redirección de E/S: echo, >, >>, |…
- Crear / Borrar archivos y directorios: touch, mkdir, rm, rmdir…
- Renombrar / Mover / Copiar archivos y directorios: mv, cp, ln…
- Consejos prácticos para manejar la consola bash, autocompletar comandos y búsqueda reversa en el historial.
- Cambiar permisos o propietario de archivos/directorios: chmod, chown…
- Monitorización del sistema: df, du, ps, top/htop…
- Cómo lanzar procesos daemonizados con nohup y &, y localizar sus PIDs y de ser necesario matarlos con kill/pkill.
- Como usar GNU/Linux en Cloud (AWS)
- Cómo crear tu primera cuenta en AWS
- Cómo lanzar una instancia de EC2 gratuita con Ubuntu LTS
- Cómo conectarnos a la instancia mediante SSH (Secure Shell)
- Introducción teórica a la IA y las tecnologías Big Data:
- ¿Qué es la Inteligencia Artificial?
- Aprendizaje Supervisado: Regresión vs Clasificación
- Aprendizaje No Supervisado: Clusterización
- Análisis descriptivo vs predictivo vs prescriptivo
- Fases de un proyecto de datos, metodología CRISP-DM
- Herramientas y lenguajes de programación más usados para analizar datos: Python, R, Software de BI…
- Bases de Datos SQL vs NoSQL
- Computación distribuida (Hadoop, Spark…)
- Cloud (AWS, Google Cloud Azure…)
2) Módulo 2: Fundamentos de Programación en Python (12 sesiones)
- Introducción a los lenguajes de programación
- ¿Qué es un lenguaje de programación?
- Lenguajes de alto nivel vs lenguajes de bajo nivel
- ¿Qué es el código máquina? ¿Qué es un compilador?
- Lenguajes compilados vs lenguajes interpretados
- Historia de los lenguajes de programación
- Paradigmas en la programación: Estructurado, Orientado a Objetos y Funcional
- ¿Qué es Python, cuál es su filosofía y qué lo hace tan popular?
- Python: Sentencias Básicas y Bloques Lógicos
- Expresiones, sentencias y variables
- Trabajando con números
- Trabajando con Strings
- Trabajando con booleanos
- Trabajando con listas
- Trabajando con tuplas
- Trabajando con diccionarios
- Trabajando con sets
- if, if-else, if-elif
- Bucle for
- List Comprehension
- Iteradores
- Generadores
- Bucle while
- Break, continue
- Pass
- Python: Funciones y Scope
- Definición de funciones
- Llamada a funciones
- Uso de argumentos en las funciones
- Argumentos opcionales
- Uso de número indeterminado de argumentos (*args y **kwargs)
- Introducción a la programación funcional
- map, reduce y filter
- Funciones anónimas y operador lambda
- Scopes y namespaces en Python
- La regla LEGB
- Python: Clases y Objetos y Tratamiento de Excepciones
- Diferencia entre el concepto de clase y el de objeto
- Atributos y métodos
- ¿Qué es el parámetro self y para qué se utiliza?
- Definir el constructor de una clase
- Métodos públicos y privados
- Instanciando y usando objetos a partir de una clase
- Métodos con funcionalidades especiales: str, add, sub...
- Herencia simple y múltiple
- Creando generadores mediante una clase y el comando yield
- ¿Qué son las excepciones y para qué se utilizan?
- Manejo de excepciones: try, except
- Capturando varias excepciones a la vez
- else y finally
- Cómo lanzar una excepción
- La jerarquía de excepciones en Python
- Creando nuestras propias excepciones personalizadas
- Python: Módulos y Uso de librerías de Python
- Importación de módulos existentes en Python
- Creación de módulos propios
- Trabajando con ficheros: Lectura y escritura de archivos
- Manejo de rutas con os.path
- Serialización de objetos con pickle
- Creación de hilos con la librería threading
- Expresiones regulares con re
3) Módulo 3: Análisis de Datos con Python (5 sesiones)
- Python: Librerías básicas de Data Science:
- Numpy
- Pandas
- Matplotlib
- Sklearn
- Introducción teórica al análisis exploratorio de Datos:
- ¿Qué es un EDA?
- Cómo definir las preguntas de negocio que debemos responder y tener una idea general de nuestro dataset
- Definir los tipos de datos que tenemos (numéricos: discretos vs continuos, categóricos: nominales, ordinales y binarios)
- Preparación de datos (tratamiento de nulos, unión de datos de varias fuentes, normalización, feature engineering…)
- Medidas de tendencia central y de distribución (media, mediana, moda, desviación estándar, RIC…)
- Detección de outliers
- Visualizando los datos (boxplots, violinplots, gráficos de barras, histogramas, gráficos de dispersión, mapas de calor…)
- Analizando las posibles interacciones entre las variables del dataset (análisis bivariado y multivariado: tablas pivotantes, correlaciones…)
- Modelos simples de Machine Learning para entender si podemos predecir fácilmente el valor de la variable objetivo a partir de las demás.
- Cómo extraer conclusiones válidas de nuestro análisis de datos.
- Python: Ejemplificación del análisis exploratorio de datos mediate Datasets reales
4) Módulo 4: Introducción al Machine Learning (2 sesiones)
- Desambiguación de términos:
- Machine Learning, Deep Learning, Data Science, Big Data
- ¿Qué significa ser un científico de datos?
- Tipos de Machine Learning:
- Aprendizaje supervisado (regresión/clasificación)
- Aprendizaje no supervisado (clustering/reducción de dimensionalidad)
- Aprendizaje por refuerzo
-Aprendizaje supervisado:
- Regresión Lineal: Principios teóricos y matemáticos de la regresión lineal, aplicaciones, puntos fuertes y limitaciones.
- Regresión Logística: Principios teóricos y matemáticos de la regresión Logística, aplicaciones, puntos fuertes y limitaciones.
- Ejemplos de aplicación de los algoritmos de Machine Learning vistos en datos reales con Python mediante el uso de sklearn.
4.1) Módulo 4.1: Introducción a la IA Generativa (3 sesiones)
- ¿Como aprovechar los recientes avances en IA generativa? Panorama actual de tecnologías más relevantes por campo:
- Texto: ChatGPT, Bard, LLaMA…
- Imagen: DALL·E, Midjourney, Stable Diffusion…
- ¿Qué es el Prompt Engineering? ¿Es quizás una de las profesiones del futuro?
- Usando la API de Open AI para crear nuestros primeros chatbots basados en ChatGPT con Python.
5) Módulo 5: Bases de Datos Big Data (5 sesiones)
- Introducción a las Bases de datos SQL.
- Datos estructurados vs semiestructurados vs No Estructurados
- Principios claves de los RDBMS (Sistemas de Gestión de Bases de Datos Relacionales)
- Datos tabulares
- Principios del modelo relacional
- Claves primarias y claves foráneas
- Propiedades ACID
- Ejemplo: Primeros pasos con SQLite,
- Instrucciones básicas de búsqueda y filtrado: SELECT, FROM, WHERE, ORDER BY, LIMIT…
- Búsqueda de patrones con LIKE
- Operadores Lógicos (> < >= <=)
- AND y OR
- Agrupando con GROUP BY y HAVING
- Uso de subconsultas para trabajar con información extraída de otras tablas, la utilidad de IN
- Creación y consulta de vistas
- Funciones: MIN, MAX, COUNT, AVG, SUM…
- Creación de alias
- JOINS: INNER JOIN, LEFT JOIN, RIGHT JOIN…
- UNION y UNION ALL
- Inserciones de datos con INSERT INTO
- Borrado con DELETE FROM
- Actualización de datos con UPDATE
- Programación en Python con SQLite.
- Cómo conectarse a una base de datos SQLite con Python
- Creando cursores
- Ejecutando consultas mediante un cursor
- Realizando commits de nuestras transacciones
- Ejecutando inserciones masivas con executemany
- Cerrando la conexión a la base de datos
- Bases de datos NoSQL:
- Bases de datos Clave-Valor
- Bases de datos Columnares
- Bases de datos Documentales
- Bases de datos De Grafos
- Diferencias entre SQL y NoSQL, cuándo usar cada una y por qué
- Teorema CAP
- Bases de Datos NoSQL Documentales: MongoDB
- Instalando y configurando MongoDB en GNU/Linux y en Windows
- Qué es MongoDB
- Componentes clave de la arquitectura de MongoDB
- Conceptos clave: Colección, cursor, base de datos, documento, campo…
- ¿Qué es JSON?
- JSON - Tipos de valores: Matriz, Booleano, Número, Objeto y Cadena
- JSON: Objetos vs Arrays
- ¿MongoDB utiliza BSON o JSON?
- Diferencia entre MongoDB y RDBMS
- Comandos básicos de MongoDB: Listar bases de datos, cambiar de base de datos, crear una base de datos, crear una colección…
- Primeros pasos por la interfaz gráfica MongoDB Compass
- Inserción de datos
- Consultando y filtrando datos en base a condiciones ($gt, $lt, $lte…)
- Actualización de documentos con $set y actualización masiva de documentos
- Operadores lógicos: $and, $or, $not, $nor
- Agregaciones con MongoDB
- Índices en MongoDB
- MongoDB con Python: PyMongo:
- Instalando y configurando PyMongo
- Estableciendo una conexión con MongoClient
- Elegir una base de datos y una colección mediante código
- Crear documentos de Mongo en formato nativo de Python (diccionarios y listas)
- Insertando documentos
- Buscando documentos en la base de datos, aplicando filtros
- Inserciones en bulk
- Consultas de rango
- Creando índices
6) Módulo 6: Procesamiento Distribuido (4 sesiones)
- Funcionamiento de un sistema Big Data de Procesamiento Distribuido:
- Ingestión de datos masivos
- Almacenamiento de datos masivos
- Gestión de Recursos en sistemas distribuidos
- Cálculo Distribuido
- Hadoop
- Componentes de Hadoop: Map Reduce / YARN / HDFS
- Instalando y configurando Hadoop
- Componentes de un clúster Hadoop: Namenode, Datanodes, Secondary Namenode
- Arquitectura de HDFS: Distribución de los datos, factor de replicación y recuperación ante fallos de nodos.
- El principio WORM de HDFS
- Comandos básicos del sistema de archivos HDFS
- Explicación de MapReduce
- Las fases de MapReduce
- Arquitectura de YARN
- Introducción a Spark: pySpark y DataFrame API
- Conceptos clave de Spark: Job, Stages, Tasks, DAG, executor, master, worker…
- Componentes de Spark: SparkContext, DAGScheduler, TaskScheduler…
- Instalando y configurando Spark
- Python + Spark: pySpark
- RDD vs DataFrame API
- Tipos de operaciones en Spark: Acciones vs Transformaciones
- Lazy Evaluation en Spark
- Spark DataFrame API comparación con Pandas y diferencias principales
- Operaciones principales con un DataFrame de Spark: Leer datos, filtrar, aplicar funciones, joins, tablas pivotantes…
- Machine Learning con Spark ML:
- Funciones de pre-procesado de datos que podemos aplicar antes de realizar machine Learning con Spark ML: Binarizer, Bucketizer, QuantileDiscretizer, StringIndexer, labelConverter, VectorAssembler…
- Cómo realizar una regresión lineal y una regresión logística con datos reales usando Spark ML
- Cómo aplicar modelos y transformaciones en cadena mediante Pipelines.
- PySpark Pandas
- Cómo usar la sintaxis de pandas en spark, ventajas y limitaciones
- Cómo convertir entre DataFrame de Spark y DataFrame de PySpark Pandas
7) Módulo 7: TFM (Opcional) (2 meses)
- El alumno presentará una propuesta de proyecto de en el que se utilicen tecnologías Big Data y lenguaje de Python para resolver un caso de negocio al docente.
- Una vez aprobada la propuesta el alumno lo realizará
- Al entregarlo el docente dará su feedback y si este es positivo el alumno tendrá una mención especial en su diploma y prioridad en nuestra bolsa de empleo.
Herramientas y librerías que aprenderás.
- Python
- Linux
- Jupyter Lab
- Pycharm
- AWS
- Spark (PySpark, Spark MLlib, PySpak Pandas)
- Hadoop (HDFS, YARN)
- Mongo DB
- NumPy
- Pandas
- Matplotlib
- Sklearn
- ChatGPT
- DALL·E 3
- OpenAI API
- Chatbots
Coaches
Borja Antón
Daniel Martínez García