Python Essentials for ETL
SESIÓN I
Docente: Juan Salinas
PERFIL PROFESIONAL
ü Profesional de la carrera de Ingeniería de Sistemas
ü Candidato a Magister en Administración de Empresas
MBA – Universidad Autónoma del Perú
ü + 7 años de experiencia en áreas de Business
Intelligence, Big Data, Software Factory y consultoras
de TI a nivel nacional y extranjero.
Juan Miguel Salinas Ponce
Senior Data Engineer at Encora Inc.
[Link]
REGLAS
Se requiere puntualidad para un mejor desarrollo del curso.
Para una mayor concentración mantener silenciado el micrófono durante la
sesión.
Las preguntas se realizarán a través del chat y en caso de que lo requieran
podrán activar el micrófono.
Realizar las actividades y/otareasencomendadas en los plazos determinados.
Identificarse en la sala Zoom con el primer nombre y primer apellido.
ITINERARIO
Lunes y
Miercoles
07:30 PM – 07:40 PM Presentación - Preguntas clase anterior
07:40 PM – 09:00 PM Desarrollo de clase
09:00 PM – 09:10 PM Pausa Activa*
09:10 PM – 10:30 PM Desarrollo de clase
Horario de Atención Área Académica y Soporte
Lunes a Viernes 09:00 am a 10:30 pm / Sábado 09:00 am a 02:00pm
EVALUACIÓN
Asistencia (Curso): mínimo 80% sesiones para
recibir la certificación
Trabajo Exámen Final
+
(50%) (50%)
OBJETIVO
General:
• Aprender a utilizar el lenguaje Python para el desarrollo de procesos
ETL.
Específicos:
• Dominar Python como lenguaje de programación.
• Entender y poner en práctica el desarrollo de procesos ETL utilizando
Python.
¿Por qué Python?
¿Por qué Python?
• Es extremadamente versátil, con multiples usos: Data Mining, Data Science,
AI, Machine Learning, Web Development, Web Scraping, Web Frameworks,
…
• Es el lenguaje de programación que esta en mayor crecimiento.
• Tiene una gran demanda de empleabilidad.
• Es muy fácil de leer, escribir y aprender.
• Tiene una gran comunidad
[Link]
¿Qué es ETL?
• Es un método para la extracción, transformación y carga de datos (Extract,
Transform and Load).
• Se ha utilizado tradicionalmente en las organizaciones para combinar datos
de distintas fuentes en una sola base, almacén o lago de datos
[Link]
Herramientas ETL
Azure DataFactory
AWZ Glue
Google Cloud Data Fusion
Oracle Data Integrator
IBM InfoSphere DataStage
Python para ETL
• Nos da mayor control de nuestro proceso
• Requiere conocer Python a profundidad
• Gran comunidad para soporte
• Existen librerías de python diseñadas para ETL:
Petl, Pandas, Mara, Airflow, Pyspark, Bonobo, Luigi, Odo
Herramientas para ETL con Python
PYETL Airflow
Pandas Mara
(Python ETL) (Apache Airflow)
Básico, no ofrece análisis de datos, De las mas populares librerías, usa Ofrece interfaz de usuario web para Herramienta de orquestación,
problemas de performance. dataframes, ofrece funciones de visualizar ejecución de ETL utilizado para crear, programar y
visualización y análisis de datos. monitorear flujos de trabajo.
PySpark Bonobo Luigi Odo
ODO
Versión de Spark que se ejecuta en Usa concepto de gráficos para Herramienta sofisticada, tiene Herramienta de python para
Python, soporta data-streaming, crear ETLs, soporta procesamiento herramientas para crear complejos convertir datos de un formato a
SQL, Mlib, y procesamiento de paralelo y tiene interfaz visual. ETL. Viene con dashboard para otro. Gran rendimiento a cargar
gráficos (Graph X) hacer seguimiento de ETL creados. datasets CSV.
[Link]
Python
Introducción a Python
Tipos de datos en Python
Creación de programas en Python
Interactuando con el OS
POO en Python
Introducción a Python
Tipos de datos en Python
Creación de programas en Python
Interactuando con el OS
POO en Python
Introducción a Python
• Variables
• Trabajando con cadenas
• Función Print
• Booleanos y condicionales
• Loops
• Funciones
• Otros (Manejo de excepciones, Range, List Comprehension, Instrucciones:
Pass, Continue, break)
Variables
• Una variable es utilizada para almacenar información que será
utilizada mas adelante
Declaración de variables Utilizando el signo ‘=‘. Ejemplo:
monto_deuda = 2500
moneda = ‘Soles’
Interactuando con el usuario Utilizando input(), para almacenar en una variable:
monto_interes = input(‘Ingrese el dato’)
Operando con variables Se pueden utilizar los signos: +, -, *, **, /
dependiendo del tipo de variable.
resultado = monto_deuda + monto_interes
4 * monto_deuda
Obtener el tipo de variable Es posible a partir de la función type():
type(monto_deuda), type(moneda)
Cambiando el tipo de variable Cambio a String: str(monto_deuda)
Cambio a Integer: int(‘2500’)
Trabajando con cadenas
• Es un tipo de datos para almacenar y utilizar textos en python.
Concatenando Strings Se utiliza el operador + : ’a’ + ‘b’
Para utilizar alguna dentro de la otra:
Uso de comillas simples y - “It’s a string with a single quote”
dobles - ‘It\’s a string with a single quote’
Para utilizar dentro del texto comillas simples y dobles:
Uso de comillas triples - “””He said: “Hello, I’ve got a question” from the audience“”””
Permite poner la primera letra en mayúsculas. Ejemplo:
Método capitalize
‘hello world’.capitalize()
Permite poner el texto en mayúsculas. Ejemplo:
Método upper
‘hello world’.capitalize()
Permite poner el texto en minúsculas. Ejemplo:
Método lower
‘hello world’.lower()
Permite poner el texto en formato título (Primeras letras de cada
Método title palabra en mayúsculas, las demás en minúsculas. Ejemplo:
‘hello world’.title()
Permite contar apariciones de un texto dentro de su cadena.
Método count
Ejemplo: ‘hello world’.count(‘l’)
Función len Permite obtener la cantidad de caracteres en un string: len(‘Hello’)
Permite dividir un string de acuerdo a determinado valor. Por defecto
Método split
se considera espacio. Ejemplo: ‘Hello World’.split()
Permite remover determinados valores de los extremos de un string.
Método strip
Ejemplo: ‘(Hello Worl), ‘.strip(‘(), ‘)
Permite reemplazar parte de un string por otro. Ejemplo:
Método replace
‘Hello World’.replace(‘Hello’, ‘Hi’)
Permite obtener la posición inicial de una parte de un string.
Método index
‘Hello World’.index(‘o’)
Permite obtener partes de un string en base a su indice. Ejemplos:
‘Hello World’[0] (Resultado: ‘H’)
Partes de una string
‘Hello World’[-2] (Resultado: ‘l’)
‘Hello World’[0:5] (Resultado: ‘Hello’)
Invirtiendo un string Hello World’[::-1] (Resultado: ‘dlroW olleH’)
Se pueden utilizar varios métodos en un string. Ejemplo:
Llamadas en cadena ‘(Hello Worl), ‘.strip(‘(), ‘).upper().split() (Resultado: [‘HELLO’,
‘WORLD’}
Forma sencilla para crear in string a partir de otro string y variables.
Python f-string Ejemplo: nombre = ‘Angel’, edad = ’32'
f’Mi nombre es {nombre}, y mi edad es {edad}’
Función Print
• Permite mostrar texto en nuestra pantalla
print(‘Hola Mundo’) Resultado: Hola Mundo
print(type(‘Hola Mundo’) Resultado: <class ‘str’>
print(type(5)) Resultado: <class ‘int’>
print(‘Mi nombre es’, nombre) Resultado: Mi nombre es Angel (nombre = ‘Angel’)
print(f’Mi nombre es {nombre}’) Resultado: Mi nombre es Angel (nombre = ‘Angel’)
print('Los datos de mi mascota Resultado: Los datos de mi mascota son:
son:\nNombre \t: Sugar\nRaza \t: Nombre. : Sugar
Sharpei\nColor\t: Marron') Raza. : Sharpei
Color. : Marron
print(r'Los datos de mi mascota Resultado:
son:\nNombre \t: Sugar\nRaza \t: Los datos de mi mascota son:\nNombre \t: Sugar\nRaza \t:
Sharpei\nColor\t: Marron') Sharpei\nColor\t: Marron
Booleanos y Condicionales
• Un booleano es el tipo de dato más simple. Puede tomar el valor de
Verdadero o Falso. Los booleanos, en combinación con los operadores
booleanos, nos permite crear programas condicionales.
Booleanos - Equivalencias
Valor Función Resultado
Valor vacío bool() False
Texto vacío bool(‘’) False
Espacio bool(‘ ‘) True
Lista vacía bool([]) False
Diccionario vacío bool({}) False
Cero bool(0) False
Uno bool(1) True
Texto bool(‘Hola’) True
Lista con dato bool([‘Hola’]) True
Operadores Booleanos
Operadores de comparación
Operadores lógicos
Signo Descripción Ejemplo
Signo Descripción Ejemplo
2 > 1: True
> Mayor que ‘a’ > ‘b’: False not True: False
not Negación
not False: True
2 < 1: False
< Menor que
‘a’ < ‘b’: True True and True: True
and Conjunción True and False: False
<= Mayor o igual que 2 >= 1: True False and False: False
<= Menor o igual que 2 <= 1: False True or True: True
== Igual 2 == 2: True or Disyuncion True or False: True
False or False: False
!= Diferente 2 != 2: False
Loops: For loop y While loop
• Permite repetir pedazos de código.
for - loop
while - loop
En un string
En una lista
Utilizando
enumerate
Funciones
• Una función es una sección con un nombre de un programa que realiza
una tarea específica y, opcionalmente, devuelve un valor.
Ventajas de utilizar una función
• Reutilizar código
• Permite utilizar parámetros
• Retorna valores
Built - in functions
• Son funciones que ya existen en Python
Ejemplos:
• print: Muestra un texto en consola (No retorna un valor)
• len: Retorna la cantidad de elementos de un tipo de dato (Caracteres en
un texto, elementos en una lista)
Creando funciones
• Las funciones se crean agregando la palabra reservada def seguido del
nombre de la función. Esta puede contener parámetros y opcionalmente
puede retornar un valor.
Ejemplos:
Otros: Manejo de excepciones
Excepciones:
• Una excepción es una condición que surge durante la ejecución de un
programa. Es una señal de que sucedió algo inesperado.
Nomenclatura:
Excepciones comunes
Nombre de la Ejemplo: Situación que genera la
excepción Cuándo la encontramos excepción ¿Cómo manejamos la excepción?
Ocurre cuando un valor no está
NameError
definido
Surge cuando una llave no es
KeyError
encontrada en un diccionario.
Ocurre cuando un indice esta
IndexError
fuera del rango
Excepciones - Mejores prácticas
• No se recomienda
dejar el except en
blanco.
• Para mayor detalle,
se recomienda
guardar la excepción
en una variable.
Excepciones - Ejemplo completo
• Múltiples except Resultados
Excepciones - Ejemplo completo
• Un except, multiples exceptions Resultados
Range
• Es una función de Python que permite crear una secuencia de números.
Generalmente es utilizado en combinación con for - loops.
Para visualizar el range, podemos agregarlos en una
lista.
Función Range Descripción
Genera una secuencia desde 0 hasta
range(stop)
antes de stop
Genera una secuencia desde start hasta
range(start, stop)
antes de stop
Genera una secuencia desde start hasta
range(start, stop, step)
antes de stop, incrementando en step
List Comprehension
• Permite crear una lista de Python basado en una lista existente.
Instrucciones: pass, continue, break
Pass:
• No hace nada, utilizado para forzar la no realización de una acción o dejar
en evidencia un código a crear
Instrucciones: pass, continue, break
Continue:
• Permite detenerse en un punto y continuar con la siguiente iteración
Nótese que no se está
imprimiendo el número 2
Instrucciones: pass, continue, break
Break:
• Utilizado para salir del loop actual
Nótese que sólo se ha imprimido
hasta el número 1