[go: up one dir, main page]

0% encontró este documento útil (0 votos)
140 vistas186 páginas

Introduccion A La Programacion y A Python

El documento presenta una introducción a la programación y Python, abarcando conceptos fundamentales como algoritmos, funciones, entornos de desarrollo y tipos de lenguajes. Se destaca el uso de Google Colab como herramienta para programar en Python sin necesidad de instalación, así como las operaciones básicas y comentarios en el código. Además, se anticipan temas para futuras clases, incluyendo variables, tipos de datos y estructuras de datos.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
140 vistas186 páginas

Introduccion A La Programacion y A Python

El documento presenta una introducción a la programación y Python, abarcando conceptos fundamentales como algoritmos, funciones, entornos de desarrollo y tipos de lenguajes. Se destaca el uso de Google Colab como herramienta para programar en Python sin necesidad de instalación, así como las operaciones básicas y comentarios en el código. Además, se anticipan temas para futuras clases, incluyendo variables, tipos de datos y estructuras de datos.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 186

Gerónimo Albornoz

@geroalbornoz
Introducción a la Programación y a Python
Julio/Agosto de 2023

Fecha
Presentación
Contador Público, Especialización en Finanzas,
Corredor Inmobiliario/Mobiliario
Autodidacta en Programación y Análisis de Datos

Intereses:
● Análisis y Ciencia de Datos, BI
● Educación Financiera,
● Startups
● Crypto / Web3
Qué veremos hoy?
Clase 1
1. Introducción a la Programación:
a. Algoritmos,
b. funciones,
c. entornos,
d. tipos de lenguajes y python
e. intérpretes
2. Google Colab
3. Python es una Calculadora!
4. Python - Operadores
5. Python - Comentarios
Sincronización de Expectativas

¿Consultas o Dudas previas?

¿Algún Tema en Particular


que esperan ver?
Introducción a la Programación
Algoritmos
3 partes importantes: EPS
Definición:
https://es.wikipedia.org/wiki/Algo
ritmo

“metodología de Trabajo”:
buscar en Google (y chatGPT y
similares ;-) )
Introducción a la Programación
Funciones
Al proceso de input,
proceso y output
lo podemos pensar
como
funciones
matemáticas

Cada Algoritmo hay


que pensarlo como
una o más funciones

Link video de profe


matemáticas
Introducción a la Programación
Funciones
Un algoritmo (programa o
script) está compuesto por
datos e instrucciones que
manipulan esos datos.

Una variable es una forma


de almacenar e identificar
un dato con un nombre, para
que podamos utilizarlo

Son “Variables” porque


pueden cambiar durante el
flujo del programa.
Introducción a la Programación
Funciones
Finalmente, aplicamos todo
junto

x = -3
funcion = x - 1

y = funcion
y = -4

x = -2
y= funcion
y = -3
Introducción a la Programación
Entornos
OK, si vamos a Programar…

¿Qué necesitamos?

Herramientas: Lenguaje,
Intérprete

Saber cómo usarlas: (este curso,


posteriores capacitaciones y
experiencia!)

Definir dónde usarlas: Entornos


Introducción a la Programación
Tipos de Lenguajes
Python, ¿Qué es?
Python es un lenguaje de programación open source, de alto nivel
interpretado y orientado a objetos...
Open Source: código abierto, utilizable de manera gratuita

De Alto Nivel: expresa los algoritmos de una manera adecuada a la capacidad cognitiva
humana (“entendibles por humanos”)

Interpretado: El código se ejecuta directamente, instrucción a instrucción.

Orientado a objetos:todo es considerado un “objeto”

https://docs.python.org/3/faq/general.html#what-is-python
https://www.netflix.com/ar/title/80216752
Introducción a la Programación
Entornos
Entornos Cloud:
● Pre Armados (Ej, Google
Colab, o repl.it)
Ideal para principiantes y para
compartir, sin renegar por temas
de actualizaciones, etc

● Custom: VPS instalando


intérprete, librerías y archivos
Ideal para un bot (Usuarios
intermedios o avanzados)
Introducción a la Programación
Entornos
Entornos Locales:
● Pre Armados (Ej: Anaconda)
Ideal para usuarios intermedios que
siguen aprendiendo desde una base

● Custom (Ej. Visual Studio Code +


entornos virtuales + Servidores
virtuales y stacks)
Ideal para usuarios avanzados

Local quiere decir que usamos todos


recursos de nuestra compu (memoria,
disco y procesador Free Download | Anaconda
Introducción a la Programación
Intérprete
Entornos Locales:
Es el Programa donde se puede
escribir (compilar) y ejecutar
código Python

En esta Capacitación trabajaremos


con un intérprete en un entorno
cloud sin necesidad de instalar ni
configurar nada en nuestra
Computadora.

A futuro podés instalar Python en


tu compu, a través del proyecto
Anaconda.
Google Colab

Presentación

Colab permite programar en Python en tu browser con las siguientes


ventajas:

1. No requiere configuración → No es Necesario instalar (barrera)


2. Da acceso gratuito Recursos de Google! (incluyendo GPUs)
3. Permite compartir contenido → Como cualquier doc de google drive

https://colab.research.google.com/notebooks/intro.ipynb#scrollTo=5fCEDCU_qrC0
Google Colab

Cuadernos
Este intérprete nos permitirá generar archivos llamados Cuadernos de Python
(notebooks) con la extensión, .ipynb que pueden alojarse en google drive o
descargarse a nuestra compu para utilizar localmente.

Celdas
Estos Cuadernos están compuestos por “celdas” que son compartimentos
donde podemos:

● Escribir código o
● Generar un fragmentos de documento de tipo editor de texto
Google Colab

Ejecución de Celdas
La celdas de código las vamos escribiendo procurando agrupar variables, funciones,
importación de librerías, etc. según nuestro propio criterio.

Para que se ejecute el código contenido en cada celda, debemos hacer click en el
ícono Play a la izquierda de cada celda o Shift + Enter y esperar a que culmine
su ejecución.

Ver:
● Ejecutar todas las celdas: Menú Entorno de Ejecución → Ejecutar Todas
● Herramientas → Combinaciones de Teclas
Google Colab

Compartir Archivos
Los cuadernos que vayamos generando, los podemos compartir con la
función Compartir, ubicada arriba a la derecha.

Esta acción tiene los mismos parámetros que cualquier archivo de


google drive. Osea podemos Compartir:
● A personas determinadas,
● A cualquier persona con el enlace generado ,

En ambos casos, eligiendo si otorgamos permisos de Editor,


Lector o Comentador
Google Colab

Limitaciones

● No es adecuado para escribir programas o scripts de python


(.py) de mayor complejidad

● Debe instalarse librerías no pre instaladas cada vez que las


necesitemos
● No tenemos verdadero control de lo que dejamos en la nube
● Lo que es GRATIS, tiene recursos limitados
Google Colab

Comparativa con IDE Local


Conceptos /Tipo de Intérprete Google Colab IDE

Instalación Servidor de Google (precisa conexión a internet) Local

Tipo de Archivos generados .ipynb .py

Contenido Código, Texto, Imágenes, Links Código

Utilización (en general) Ciencia de Datos, Scripts Simples Programas completos o scripts mas largos

Ejemplos Google Colab, Jupyter Notebook Visual Studio, Spyder, Pycharm, Vim
Google Colab

¿Vamos a programar?

https://colab.research.google.com/
Python es una Calculadora!
(y mucho más)

● Podemos realizar cálculos de todo tipo, desde aritmética hasta cálculo matricial.

● Tenemos disponible Operadores matemáticos.

● La operatoria general, es ir asignando los cálculos a variables.

https://docs.python.org/es/3/tutorial/introduction.html
Python es una Calculadora!
(y mucho más)

● Podemos realizar cálculos de todo tipo, desde aritmética hasta cálculo matricial.

● Tenemos disponible Operadores matemáticos.

● La operatoria general, es ir asignando los cálculos a variables.

https://docs.python.org/es/3/tutorial/introduction.html
Python es una Calculadora!
(y mucho más)
Operador Matemático Ejemplo a=10, b=20

+ Suma a + b = 30

- Resta a – b = -10

* Multiplicación a * b = 200

/ División b / a = 2.0

// División Entera b // a = 2

% Módulo b%a=0

** Exponente a**b =10 a la potencia 20

https://docs.python.org/es/3/tutorial/introduction.html
Python es una Calculadora!
(y mucho más)
Los Paréntesis (tal y como ocurre en papel), se usan para agrupar:

a = 5 * (8 + 10)

b = (10 + a) / 7 #La división siempre retorna un número de punto flotante o float

c=a*b

https://docs.python.org/es/3/tutorial/introduction.html
Python es una Calculadora!
(y mucho más)
Los Paréntesis (tal y como ocurre en papel), se usan para agrupar:

a = 5 * (8 + 10)

b = (10 + a) / 7 #La división siempre retorna un número de punto flotante o float

c=a*b

https://docs.python.org/es/3/tutorial/introduction.html
¡Vamos al Colab!
Python - Operadores
Operador Nombre Ejemplo

De Asignación: El más utilizado


es el = Ejemplo: variable = “Hola == Igual a == b

Mundo”
!= No igual a != b
De Comparación: utilizados
> Mayor que a>b
para comparar 2 valores:

< Menor que a<b

>= Mayor o igual que a >= b

<= Menor o igual que a <= b

https://www.w3schools.com/python/python_operators.asp
Python - Operadores
Lógicos: utilizados para escribir condicionales
Operador Nombre Ejemplo

and Retorna True si ambas condiciones son True a > 1 and b == 0

or Retorna True si alguna de las condiciones son True a > 1 or b == 0

not Hace la Inversa. Retorna False si el resultado es True not (a > 1 and b == 0)

De Pertenencia: para saber si cierto valor se encuentra en cierto objeto


Operador Nombre Ejemplo

is in Retorna True si el valor está en el objeto a in b

is not in Retorna True si el valor NO está en el objeto a not in b

https://www.w3schools.com/python/python_operators.asp
Python - Comentarios
# → única línea
""" """ → multi línea
● Son textos para aclarar el código, que no son ejecutados por Python.

● También se pueden utilizar para dejar alguna línea de código que no


queremos ejecutar en ese momento, pero quizá necesitemos luego

Ejemplos:
#esta división agrupa la tabla por edades, fue lo requerido por el cliente

""" Este es un script modelo que realiza un Análisis Exploratorio de Datos, basado en el
Manual de buenas prácticas del sector de Análisis de Datos"""
https://www.w3schools.com/python/python_operators.asp
Espacio de Preguntas!
Python
Repaso de clase
1. Introducción a la Programación:
a. Algoritmos,
b. funciones,
c. entornos,
d. tipos de lenguajes y python
e. intérpretes
2. Google Colab
3. Python es una Calculadora!
4. Python - Operadores
5. Python - Comentarios
Muchas gracias!!
Qué veremos hoy?
Clase 2
1. Variables
2. Funciones 1.0
3. Tipos de Datos
4. Estructuras de Datos
5. Listas
6. Diccionarios
7. Indexación
8. Manipulación de Strings
Python
Repaso de clase anterior
1. Introducción a la Programación:
a. Algoritmos,
b. funciones,
c. entornos,
d. tipos de lenguajes y python
e. intérpretes
2. Google Colab
3. Python es una Calculadora!
4. Python - Operadores
5. Python - Comentarios
Python
Variables
Repaso: Una Variable es un objeto que almacena datos.

En Python:
1. El valor o dato que almacena la variable, es variable.
2. En el momento de su creación, Python determina qué tipo de dato es.
3. Los nombres de las variables son case sensitive
4. Se definen con el signo igual =

años = 37 #variable numérica de tipo integer (entero)


g = "Escriba su nombre aquí" #variable de tipo string (cadena de texto)
print("Hola Mundo, soy", g, "tengo {} años".format(años))

>>>Hola Mundo, soy Escriba su nombre aquí tengo 37 años


https://www.w3schools.com/python/python_variables.asp#:~:text=Python%20has%20no%20command%20for,assign%20a%20value%20to%20it.
Python
Variables

Buenas prácticas en nombre de variables

● Siempre las variables es mejor que empiecen con minuscula


● Poner nombres que representen a lo que tiene la variable
● camelCase
● snake_case
● CONSTANTES (todo mayúscula)
Python
Funciones
En nuestro querido Excel...

https://www.w3schools.com/python/python_ref_functions.asp
Python
Funciones
Python tiene una enorme cantidad de funciones que puede realizar.
Estas realizan tareas o cómputos que precise nuestro programa.

● Algunas Funciones son de tipo built in (incorporadas), que podemos usar


directamente

● Para utilizar otras funciones necesitamos importar una Librería y llamarlas


a través suyo.

● Finalmente, podemos escribir nuestras propias funciones

https://www.w3schools.com/python/python_ref_functions.asp
Python
Funciones
La Función print() es una de las más utilizadas
Es la salida (impresión) en pantalla de los objetos que pasamos en los paréntesis.
Puede ser:
● texto, siempre entre comillas (string)
● variables
● cualquier otro objeto (que será convertido en formato string)

En ocasiones, se la utiliza para testear o saber cómo o cuándo terminó un proceso

Ej: print(“Hola Mundo, soy”)

>>>Hola Mundo
https://www.w3schools.com/python/ref_func_print.asp#:~:text=The%20print()%20function%20prints,before%20written%20to%20the%20screen.
Python
Funciones
La Función range() es otra de las más utilizadas
Genera una secuencia de números enteros sobre los que podemos iterar.

● El primer argumento es el índice que inicia. Si no se indica, se toma el cero


● El segundo argumento no es parte de la secuencia generada, sino el anterior.
● El tercer argumento, es el step. Opcional. Si no se indica, se toma el 1
● Crea un objeto de tipo rango

Ej: range(10) range(0,11)

>>>range(0, 10)

https://docs.python.org/es/3/tutorial/controlflow.html
Python
Funciones Otras Funciones built in:

Function Description
abs() Returns the absolute value of a number

float() Returns a floating point number

help() Executes the built-in help system

len() Returns the length of an object

int() Returns an integer number

range() Returns sequence of integer numbers

max()/min() Returns the largest smallest item in an iterable


Python En Excel…
Tipos de Datos ”Formato de Celdas”

En python, se puede “castear” el tipo de dato


utilizando funciones
Castear es cambiar un tipo de dato a otro que
necesitemos:

Ejemplo:
x = str(3)
y = int(3)
z = float(3)

https://docs.python.org/es/3/tutorial/datastructures.html
Python
Tipos de Datos
El manejo de tipo de datos es un tema muy importante, porque cada tipo de dato
puede realizar operaciones diferentes
Categoría Tipo de Dato Ejemplo
Texto (**) String (str) “esto es 1 texto”

Numéricos integer (int), punto flotante 100, 3.14, 4 + 3j


(float), complejos (complex)

Secuencias (*) lista (list), tupla, conjunto, [1,2,3], (1,2,3), {1,2,3}, (0,9)
rango

Mapeo (*) diccionarios (dict) {'nombre' : 'Carlos', 'edad' : 22, 'cursos':


['Python','JavaScript'] }

Booleanos True, False


(*) Tipo de Dato Compuesto, utilizado para agrupar otros valores. También se los llama Estructuras de Datos
(**) Los strings (cadenas de texto) son secuencias y soportan las operaciones comunes para esos tipos.
Python
Estructuras de Datos

“Es una forma particular de organizar datos en una computadora para que
puedan ser utilizados de manera eficiente…”

● Estructuras Nativas
● Datos estructurados (machete rápido)
○ Generadores (funciones)
○ Listas (ordenados, no-únicos, modificable)
○ Sets (no-ordenados, unicos, modificable)
○ Tuplas (ordenados, no-unicos, no-modificable)
○ Diccionarios (Estructuras clave-valor, cada elemento tiene una etiqueta)
https://es.wikipedia.org/wiki/Estructura_de_datos
Estructuras de Datos
Listas
Son un conjunto de valores separado por coma entre corchetes
Características:
1. Pueden contener valores de distinto tipo (incluso otras listas), pero generalmente los
valores son del mismo tipo
2. Son Mutables, es decir que se puede cambiar su contenido. Se utiliza el método
append() para agregar elementos
3. Se pueden
○ indexar y hacer slicing (segmentos) (Cuando hacemos slicing, estamos creando
una nueva lista)
○ Concatenar, utlizando el +

Ejemplos: jugadores = [“El Diego”, “Messi”, “El Cani”, “El Bati”]


camiseta = [10, 10, 7, 9]
camiseta.append(8)
jugadores[3] = “Palermo”
Espacio de Preguntas!
Estructuras de Datos
Diccionarios
Son un conjunto de pares de datos, en los cuales uno es la clave (key) y
otro es el valor (value).

Se delimitan por llaves { } y, a su vez, los pares de datos por dos puntos :

{clave : valor}

Se los puede asimilar a un diccionario en papel. Las claves son las palabras
y el valor, es la definición de la palabra

Características:

Las claves deben ser únicas (igual que en los diccionarios de papel!)
Estructuras de Datos
Diccionarios
Características:

● Las claves deben ser únicas e inmutables (ídem diccionarios en papel!)


● Los diccionarios se indexan con sus claves (no numéricamente)
● Ejecutando list(d) retorna una lista con todas las claves del diccionario

Ejemplo:
jugadores = {"Messi" : "La Pulga", "Batistuta" : "El Bati", "Maradona" : "El
Diego"}

listar las claves → list(jugadores)

guardar un par clave:valor →jugadores["García"] = "El Turco"


Python - Indexación
En Python, muchas veces precisamos acceder a determinado elemento dentro de
una secuencia (Listas, string), o hasta filas o columnas (en el caso de una tabla)

Características:
● El primer elemento tiene el índice 0 (cero) y de
● El segundo elemento tiene el índice 1 y así sucesivamente
● Los índices son también Negativos, siendo -1 el último elemento, -2 el penúltimo
● Se accede mediante corchetes

Ejemplo: lista = [1,2,3,4,5,6,7] , texto = “esto es una cadena de texto”


lista[0]
lista[-1]
texto[10]
texto[-3]
https://docs.python.org/es/3/tutorial/introduction.html
Python - Indexación
También se pueden hacer slicing, esto es rebanar una parte del objeto utilizando
las misma sintaxis y dos puntos : para separar el primer y segundo índice (“desde
hasta”)

Ejemplo: lista = [1,2,3,4,5,6,7], texto = “esto es una cadena de texto”


lista[1:3]
texto[-6:-1]

Datos importantes del slicing:


● En slicing con número positivo, se excluye el último elemento
● El valor por defecto para el primer índice es cero,
● El valor por defecto para el segundo índice es la longitud de la cadena a
rebanar.
https://docs.python.org/es/3/tutorial/introduction.html
Python - Indexación

Para recordar… ejemplo con el string “Python”

P y t h o n

0 1 2 3 4 5 6

-6 -5 -4 -3 -2 -1

https://www.w3schools.com/python/python_operators.asp
Python
Manipulación de Strings P

0
y

1
t

2
h

3
o

4
n

5 6

-6 -5 -4 -3 -2 -1
Esquema General:

● La referencia es abriendo y cerrando CORCHETES [ ]


● Dentro de los [ ] hay 3 parámetros separados siempre por : [DESDE : HASTA : PASO]
● DESDE es inclusive, el HASTA es exclusive
● Si se omiten los valores, por default son [0 : FINAL : 1]

https://www.w3schools.com/python/python_operators.asp
¡Vamos al Colab!
Espacio de Preguntas!
Muchas gracias!!
Qué veremos hoy?
Clase 3

1. Funciones 2.0
2. Control de Flujo
a. Bucles
b. Condicionales
3. Errores
4. Librerías
5. Librerías datetime y requests
Python
Repaso de clase anterior
1. Variables
2. Funciones 1.0
3. Tipos de Datos
4. Estructuras de Datos
5. Listas
6. Diccionarios
7. Indexación
8. Manipulación de Strings
Python
Funciones 2.0
Repaso:

● Algunas Funciones son de tipo built in (incorporadas), que podemos usar


directamente

● Para utilizar otras funciones necesitamos importar una Librería y llamarlas


a través suyo.

● Finalmente, podemos escribir nuestras propias funciones

https://www.w3schools.com/python/python_ref_functions.asp
Python
Funciones 2.0
Sintáxis:

● def le dice a python que vamos a escribir una función


● Los () son parte de la definición de funciones y es el lugar en el cual se deben
indicar los argumentos para computar la función.
Esto es tal cual cómo ocurre en matemática → f(x)
● : para finalizar el constructor
● indentar (sangría)
● return para decirle qué devolver (no es obligatorio, no da error si no lo incluímos)

https://www.w3schools.com/python/ref_func_print.asp#:~:text=The%20print()%20function%20prints,before%20written%20to%20the%20screen.

https://www.w3schools.com/python/python_ref_functions.asp
Python
Funciones 2.0

Funciones creadas por nosotros

def multiplica(x,y):
#Esta función multiplica los argumentos que se le pasen
print("Multiplicando...")
return x * y

multiplica(155,10)

multiplica("ja",10)
https://www.w3schools.com/python/ref_func_print.asp#:~:text=The%20print()%20function%20prints,before%20written%20to%20the%20screen.
Python
Funciones 2.0
lambda

● Son funciones en una línea (también creadas por nosotros)


● Es una forma diferente de definir funciones

ejemplo_lambda = lambda x: x**2 + x


ejemplo2_lambda = lambda x, y: x * y + x

ejemplo_lambda(32)
ejemplo2_lambda(32,10)

https://docs.python.org/es/3/tutorial/controlflow.html
https://www.youtube.com/watch?v=Rn0qfNy39n4
Python
Bucles (loops)
Porción de Código que se ejecuta repetitivamente (iterativamente)

Se precisa ejecutar cierta acción un determinado número de veces o hasta


que ocurra un evento y No queremos escribir ese código múltiples veces

Tenemos 2 loops en Python: for y while

https://www.googleadservices.com/pagead/aclk?sa=L&ai=DChcSEwiOnsHZg_zzAhWIlbMKHbGICukYABAAGg
Jxbg&ohost=www.google.com&cid=CAESQeD2bVNeHYJbX7WiIiglY4JWEOFh1KynVFNU19HShfHusv5FX0sw
wwUKaVB4Cn3UKCLzSbNEouqxrFmpyQJOz9-
d&sig=AOD64_0y56u4JMBvpqplMySQL6M5klxQLw&q&adurl&ved=2ahUKEwiEubTZg_zzAhUvqJUCHeg6D2Y
Python
Bucles (loops)

for : se ejecuta sobre todos los elementos de cualquier


secuencia de datos (ej. strings, listas) en el orden que
aparecen

lista = ["ja", "je", "ji", "jo"]

for i in lista:
print(i *10, "\npasando al próximo estilo de risa...\n")

https://docs.python.org/es/3/tutorial/controlflow.html
Python
Bucles (loops)

while : se ejecuta mientras determinada Condición sea True


>>> # Fibonacci series:
... # the sum of two elements defines the next
... a, b = 0, 1
>>> while a < 8:
... print(a)
... a, b = b, a+b
0
1
1
2
3
5 Python Tutor: Visualize code in
Python
Python Python - Condicionales
Condicionales if, elif, else
Al igual que en Excel, estas sentencias nos permiten ejecutar determinada acción, si se
cumple una y/o más condiciones.
Python Python - Condicionales
Condicionales if, elif, else

En programación, permiten controlar el flujo de ejecución de un algoritmo, osea,


su hoja de ruta.

nombre = “Maria”

if nombre == “Maria”:
print (“Es María!!”)
Python Python - Condicionales
Condicionales if, elif, else
nombre = "geronimo"
Resumen:
if nombre == "Maria":
print ("Es María!!") if → necesario
elif nombre == "Jose": elif → opcional
print ("Es Jose!!")
else → opcional
elif nombre == "Juana":
print ("Es Juana!!")
else:
print("No es ninguna de las personas que estaba esperando :(")
Python
Errores
Hay que entablar amistad...

Ejemplo: Si una variable no está “definida” (no se le ha asignado un valor), al intentar usarla dará
un error:

>>> n # try to access an undefined variable


Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'n' is not defined

Realidad: Tenemos que acostumbrarnos a recibir errores e interpretarlos


Python
Errores
Hay que entablar amistad… y usar un copiloto si nos trabamos
Otro Ejemplo: sintáxis mal escrita

lista = ["ja", "je", "ji", "jo"]


for i in lista
print(i *10, "\npasando al próximo estilo de risa...\n")

File "<ipython-input-5-b025741c4416>", line 2


for i in lista
^
SyntaxError: invalid syntax
Python
Librerías
Una Librería (o Biblioteca) es un paquete de código python que contiene funciones
(métodos) para que no tengamos que escribir de cero determinado código (reinventar la
rueda).

Para utilizar una librería. Ejemplo

1. Debemos descargarla e instalarla (celda código) : pip install pandas

1. Luego, importarla (cargarla) en nuestro Cuaderno: import pandas as pd


Google colab cuenta con las librerías más importantes, pre instaladas
Python
Librería datetime
Es una libreríaimport
nativa dedatetime
python.
Permite el manejo de fechas y horas, los cuales son tipos de datos muy importantes

Posee 4 tipos de objetos principales que se pueden instanciar (llamar):

date → fecha idealizada, supone que el calendario gregoriano actual siempre estuvo y
estará vigente
time → Un tiempo idealizado, independiente de cualquier día en particular. Supone que
cada día tiene exactamente 24* 60* 60 segundos
datetime → combinación de una fecha y una hora
timedelta → representa una duración, la diferencia entre dos fechas u horas.
Material adicional librería datetime español
datetime — Tipos básicos de fecha y hora — documentación de Python - 3.11.4
Python
Librería datetime import
datetime
Es una librería nativa de python.
Permite el manejo de fechas y horas, los cuales son tipos de datos muy importantes
from datetime import datetime
Posee 4 tipos de objetos principales que se pueden instanciar (llamar):

date → fecha idealizada, supone que el calendario gregoriano actual siempre estuvo y
estará vigente
time → Un tiempo idealizado, independiente de cualquier día en particular. Supone que
cada día tiene exactamente 24* 60* 60 segundos
datetime → combinación de una fecha y una hora
timedelta → representa una duración, la diferencia entre dos fechas u horas.
Material adicional librería datetime español
datetime — Tipos básicos de fecha y hora — documentación de Python - 3.11.4
¡Vamos al Colab!
Python
Librería Requests

La librería más utilizada para


enviar solicitudes HTTP en
Python.

Visitemos su web oficial


Espacio de Preguntas!
Muchas gracias!!
Qué veremos hoy?
Clase 4

Temas Puntuales Interesantes


1. APIs:
a. ¿Qué es una API?
b. Flujo de Datos
c. APIs tipo REST
d. Qué es un Swagger?
2. El JSON
3. Herramientas de IA generativa (chat GPT, BingChat, BARD, etc)
Python
Repaso de clase anterior

1. Funciones 2.0
2. Control de Flujo
a. Bucles
b. Condicionales
3. Errores
4. Librerías
5. Librerías datetime y requests
¿Qué es una API?
Las API son mecanismos que permiten a dos componentes de software comunicarse
entre sí mediante un conjunto de definiciones y protocolos.
API significa “interfaz de programación de aplicaciones” (Application Programming
Interface):
➔Aplicación se refiere a cualquier software con una función distinta.
➔Interfaz son las definiciones de cómo se comunican entre sí mediante solicitudes y
respuestas. Esto se encuentra en la documentación de la API
APIs
APIs tipo REST
El flujo de datos se divide en 2 partes
principales:
Llamada a la API (Request/Call): estos son el
acceso y pedido de información realizadas
desde nuestra computadora (cliente)
Respuesta (Response): la computadora que
almacena la data (servidor) nos devuelve el
paquete de información solicitado
Este proceso es similar a conectarse a una web
APIs
APIs tipo REST
(Representational State Transfer, transferencia de estado
representacional)
REST es un conjunto de restricciones de arquitectura, no un
protocolo ni un estándar. Son el tipo de APIs más utilizadas
en el momento.
En estas APIs, el cliente (nuestra computadora) solicita datos
a endpoints de la API, donde se encuentran los recursos.
Cada recurso tiene un único endpoint.
Los endpoints son (simplemente) direcciones URL,
compuesto por una dirección base y el endpoint.
Programa de Formación 2022
Herramientas para análisis de datos
APIs
Swagger de las APIs MtR
Qué es un Swagger?
● Es un conjunto de herramientas de
software de código abierto para
diseñar, construir, documentar, y
utilizar APIs REST.
● incluye documentación automatizada,
generación de código, y generación de Centro de APIs
casos de prueba https://apihub.primary.com.ar/
Swagger de las APIs MtR
Integración para el back office bursátil con
métodos para administrar cuentas,
movimientos y consultar tenencias de los
comitentes.

También podés emitir reportes para envíos a


clientes finales.
APIs
Swagger de las APIs MtR
Es una plataforma de simulación de mercados
con un set de APIs de Trading y pantallas de
mercado.

“Con nuestras APIs vas a poder conectar tus


algoritmos y probarlos una y mil veces, o
desarrollar tus propias apps, con precios en
tiempo real”
APIs
Swagger y documentación de APIs MtR
Links:

https://api.sistemasesco.com/swagger/index.html?urls.primaryName=VisualBolsa%20v%209

https://remarkets.primary.ventures/#

API Matba Rofex-Documentación_v7


JSON
(JavaScript Object 1 {
Notation) 2 "firstName": "John",
3 "lastName": "Smith",
● Es un formato ligero de 4 "address": {
intercambio de datos. 5 "streetAddress": "21 2nd Street",
● Fácil lectura y escritura 6 "city": "New York",
para los usuarios. 7 "state": "NY",
8 "postalCode": 10021
● Fácil de analizar y generar 9 },
por parte de las máquinas 10 "phoneNumbers": [
● Muy utilizado 11 "212-732-1234",
12 "646-123-4567"
Tutoriales - 13 ]
Introducción a JSON 14 }
Formato JSON - IBM
Herramientas de Inteligencia Artificial generativa
Pero…qué es Inteligencia Artificial (IA)?

● Es la combinación de algoritmos que tienen el propósito de crear máquinas que presenten las
mismas capacidades que el ser humano.
● Es una disciplina y un conjunto de capacidades cognoscitivas e intelectuales expresadas por
sistemas informáticos o combinaciones de algoritmos cuyo propósito es la creación de máquinas
que imiten la inteligencia humana para realizar tareas, y que pueden mejorar conforme recopilan
información.
● Se centra en la forma en la que los equipos informáticos pueden tomar decisiones en función de los
datos.” *
* Origen: Conversación con Bing, 24/5/2023(1) https://www.iberdrola.com/innovacion/que-es-inteligencia-
artificial#:~:text=La%20Inteligencia%20Artificial%20%28IA%29%20es%20la%20combinaci%C3%B3n%20de,en%20nuestro%20d%C3%ADa%20a%20d%C3%ADa%20a%20todas%20horas..
https://bing.com/search?q=que+es+inteligencia+artificial

(2) Inteligencia artificial - Wikipedia, la enciclopedia libre. https://es.wikipedia.org/wiki/Inteligencia_artificial

(3) ¿Qué es la inteligencia artificial? | Microsoft Azure. https://azure.microsoft.com/es-es/resources/cloud-computing-dictionary/what-is-artificial-intelligence/ Con acceso 24/5/2023.
Herramientas de Inteligencia Artificial generativa
Modelos tipo chatGPT

Los de Modelos de IA tipo chatGPT


(Generative PreTrained Transformer), se
encuentran optimizados para seguir
instrucciones, con 3 “H” (Helpful, Honest,
Harmless)
También van aprendiendo de la interacción
humana para corregir errores
(Reinforcement Learning with Human sistemas optimizados para seguir instrucciones, tecnica de
puntillismo de principios de siglo XX
Feedback, RLHF)
Herramientas de Inteligencia Artificial generativa
Modelos tipo chatGPT
Y de qué va eso de “Generativas”?

El boom de los modelos GPT es porque


pueden generar contenidos de forma
autónoma con lenguaje natural

Pueden generar imágenes, texto, música y


código ya que se han entrenado con
conjuntos de datos muy grandes, lo que les
permite generar contenido original
(nuevo) en respuesta a las instrucciones
del usuario. redes neuronales, drawn by a child, plain background
Herramientas de Inteligencia Artificial generativa
Vamo´a promptear?
Los prompts son instrucciones con las que
podés lograr una buena calidad de resultados
(outputs) dependiendo de cuánta información
le proporcionas al modelo y de cuán bien
diseñado está el prompt.
Un prompt puede contener información como
la instrucción o pregunta y también incluir
otros detalles como contexto, formato o
ejemplos.
Como reza un principio básico de data science
prompting like a champ in medieval art
“garbage in, garbage out”
Herramientas de Inteligencia Artificial generativa
Vamo´a promptear? 1. Escribir instrucciones claras y
específicas.
Táctica 1: Utilizar delimitadores para indicar claramente las Táctica 2: Pida al modelo que verifique si se cumplen o no las
condiciones.
distintas partes del prompt
Te voy a pasar un texto, si es un texto con instrucciones, pido que
Delimitadores: “”, :, <>
las enumeres 1 a 1, sino escribí “este no es un texto de
instrucciones”:
Hacer un resumen del siguiente texto: <inserte su texto aquí>
<inserte su texto aquí>

Táctica 3: Solicite una salida con un formato estructurado. Táctica 4: Role prompting

Por ejemplo una tabla o formato JSON Actúa como un experto con muchos años de experiencia en escribir
canciones. Escribe una canción de la selección argentina ganando
Genera una tabla de tres títulos de películas inventadas junto la copa de la mano de Messi y Scaloni
con su año de lanzamiento, recaudación, actores y género. --------------------------------------------------------
Hacelo en formato tabla y también en formato JSON con las
Actúa como un productor de cine experimentado y detalla paso a
siguientes keys: año de lanzamiento, recaudación, actores y
paso lo necesario para que una película sea un éxito de taquilla.
género
Herramientas de Inteligencia Artificial generativa
Vamo´a promptear? 2.Dar al modelo tiempo para “pensar"
Táctica 1: Few-shots Táctica 2: especificar los pasos requeridos para completar la
tarea
Dar varios ejemplos de cómo se tiene que realizar la tarea
Realice las siguientes acciones:
Tu tarea es limitarse exclusivamente a clasificar si un
comentario es positivo o negativo, te voy a ayudar con 1 - Resuma el siguiente texto delimitado por comillas simples y
algunos ejemplos de guía: llaves con 1 oración.

"""Gran producto, 10/10: positivo. No funcionó muy bien: 2 - Traduzca el resumen al portugues.
negativo. Súper útil, vale la pena: positivo. ¡No funciona!
3 - Enumere los personajes del texto, en portugues
"""
Texto: “<inserte su texto aquí>”

Cuento de Caperucita Roja | Caperucita Roja cuento corto


(arbolabc.com)
Herramientas de Inteligencia Artificial generativa
Vamo´a promptear?
ChatGPT - Apps on Google Play

ChatGPT (openai.com) ChatGPT on the App Store (apple.com)

Try Bard, an AI experiment by Google


Muchas gracias!!
Qué veremos hoy?
Clase 5

1. Pandas 1.0:
a. Introducción a la librería más popular para análisis de datos
b. Tipos de Objetos: series y dataframe (df)
c. Creación de un dataframe
d. Carga de Archivos Locales y del Drive
e. Tipos de Datos
f. Funciones de Inspección
g. Acceso a los Valores del df
h. Manipulación de Datos: Faltantes, Reemplazos y Agrupamientos
Python
Repaso de clase anterior
Temas Puntuales Interesantes
1. APIs:
a. ¿Qué es una API?
b. Flujo de Datos
c. APIs tipo REST
d. Qué es un Swagger?
2. El JSON
3. Herramientas de IA generativa (chat GPT, BingChat, BARD, etc)
Pandas

Es la librería más popular de Python para Análisis de Datos

https://pandas.pydata.org/

import pandas as pd

Vemos la doc? https://pandas.pydata.org/docs/index.html


Pandas
Series

● Es un objeto de Pandas.

● Es una columna con un índice, que puede estar contenida


en un DataFrame o sola (Un DataFrame es un contenedor
de Series).

● Como estructura de datos, es una lista. De hecho puede


crearse a partir de una lista:

pd.Series(["lunes", "martes", "miércoles", "jueves", "viernes"])


Pandas
DataFrame (df)

● Es un objeto de Pandas. Es una estructura de datos

● Un DataFrame es una tabla.

● Contiene una matriz de entradas individuales, que


corresponde a una fila (o registro) y una columna --> Celdas
Pandas
DataFrame (df)
Pandas
Creación de un DataFrame : De cero

Se utiliza el constructor pd.DataFrame()

La sintaxis para declarar un DataFrame es un diccionario cuyas Claves


son los nombres de las columnas (Nombre de personas por ejemplo) y
cuyos Valores son una lista de entradas (Edad y Nota). Ej:

pd.DataFrame({"Nombres":["Pedro", "Juan", "Sofía"], "Edad":[15,


17,15], "Nota":[8,6, 10]})
Pandas
Creación de un DataFrame : Mediante lectura de archivos
La mayoría de las veces trabajaremos con datos que ya existen en
varias formas y formatos diferentes.

Uno de ellos es el archivo CSV, que es una tabla de valores separados


por coma (u otro caracter) sin formato.
Pandas
Creación de un DataFrame : Mediante lectura de archivos
pd.read_*
pd.to_*

https://pandas.pydata.org/docs/user_guide/io.html
Pandas
Creación de un DataFrame : Mediante lectura de archivos

Utilizamos la función pd.read_csv() y guardamos el df en una


variable (se la puede nombrar df o no, analizar)

productos = pd.read_csv(“productos.csv”)

Leyendo archivos excel:


productos_excel = pd.read_excel(“productos.xlsx”)
Pandas
Creación de un DataFrame : También puede leerse archivos
de la web...
localidades = pd.read_csv("https://infra.datos.gob.ar/catalog/modernizacion/dataset/7/distribution/7.10/download/localidades.csv")

tasas = pd.read_csv("https://infra.datos.gob.ar/catalog/sspm/dataset/89/distribution/89.2/download/principales-tasas-interes-
diarias.csv")

dolar_3500 = “http://www.bcra.gov.ar/Pdfs/PublicacionesEstadisticas/com3500.xls”

Clase_05_ Pandas.ipynb - Colaboratory (google.com)


Pandas y google Colab
Carga de Archivos Locales y del Drive
1. Subir archivos Locales, desde tu computadora
from google.colab import files
archivo = files.upload()

2. Activar uso de archivos de Google Drive


a) Con un Código de Autorización
from google.colab import drive
drive.mount('/content/drive')

a) Activando Google Drive desde la Paleta de Comandos


https://colab.research.google.com/notebooks/io.ipynb#scrollTo=vz-jH8T_Uk2c
Pandas
Creación de un DataFrame : El índice (index)

La 1er fila de la izquierda se conocen como índice.

Por defecto, Pandas le asigna un valor de cero en adelante. Podemos asignarle valores
usando el parámetro index en nuestro constructor:

pd.DataFrame ({'Pedro': ['Me gustó.', 'Muy Malo'],


'Juana': ['Bastante bien', 'Soso']},
index = ['Producto A', 'Producto B'])
Pandas
Creación de un DataFrame : El índice (index)

Si leímos un archivo y queremos que el contenido de cierta columna sea el


índice, podemos editarlo

df.set_index(“columna”, inplace=True, drop=True)


df.reset_index()
Pandas

Funciones de Inspección y Tipos de Datos


Pandas
Funciones de Inspección

Al trabajar con Datasets de gran tamaño, no podremos ver toda la


información, entonces debemos analizarlos con muestras o a nivel general.

Muestras de la data: Información General:


df.head() df.shape
df.tail() df.columns()
df.info()
Pandas
Funciones de Inspección

Valores Únicos: Ver la cantidad de valores únicos

df.columna.unique() #lista de valores

df.columna.value_counts() #lista de valores y su conteo


Pandas
Tipos de Datos en Pandas

Uno de los primeros pasos al explorar un nuevo conjunto de datos es


asegurarse de que los tipos de datos estén configurados correctamente.

Debemos saber cómo utilizar las diversas opciones de conversión de datos,


para poder realizar los análisis que precisemos.

df.info()
df.columna.dtype
https://pbpython.com/pandas_dtypes.html
Pandas
Tipos de Datos en Pandas

https://pbpython.com/pandas_dtypes.html
Pandas
Tipos de Datos en Pandas
Conversiones necesarias (casteo)

En ocasiones necesitamos que los datos sean de


determinado formato, por tema de exposición o para realizar
cálculos o funciones:

df.columna.astype(“float64”)
pd.to_numeric(df.columna) #object a numérico
pd.to_datetime() #object o número a fecha
https://pandas.pydata.org/docs/reference/api/pandas.to_datetime.html#pandas.to_datetime
https://pandas.pydata.org/docs/reference/api/pandas.to_numeric.html
Pandas
Renombrar

En ocasiones, por diferentes motivos, necesitamos renombrar df.rename()

Columnas: df.rename(columns={“columa1”:”columnarenombre”})
índice: df.rename(index={0:”primero”, 1:”segundo”})

En este caso utilizamos generalmente un diccionario de python como input


Pandas
Acceso a los Valores
Como dijimos, los dataframes tienen en su esencia, una estructura
similar a la de un diccionario de Python.

Al guardar el df en una variable, tenemos un objeto al que


podemos acceder como lo haríamos con un diccionario

Ejemplos:
df.nombre #esta es una forma de acceder a 1 columna entera
df["nombre"] #esta es otra forma equivalente de acceso
df["nombre"][-10:-1]
Pandas
Acceso a los Valores

Pandas, a su vez, tiene funciones específicas de selección

. Basada en índice (index) df.iloc[ ]

. Basada en la etiqueta df.loc[ ]

Ambas se llaman indicando primero la fila y luego la columna


Pandas
Acceso a los Valores

Diferencia entre iloc y loc:

● iloc: utiliza el esquema de indexación de datos de Python


Incluye el primer índice del rango, excluye el último índice del
rango (0:10, incluye índices del 0 al 9)

● loc: incluye el primer y último índice del rango (0:10, incluye


índices del 0 al 10)
Pandas
Acceso a los Valores

Basada en la etiqueta df.loc[ ]

Conceptualmente más simple porque no tenemos que recordar el


índice, sino el nombre de las etiquetas

ej:
df.loc["primero"] #primera fila
Pandas
Acceso a los Valores
Basada en índice (index)

df.iloc[ ]
df.iloc[]
Inputs válidos:
● Un número entero, p. Ej. 5. ejemplos:
● Una lista o matriz de números df.iloc[:,0]
enteros [4, 3, 0]. df.iloc[[2,3,5,],2]
● Un slice de datos 1: 7. df.iloc[:, 3:7]
● Una matriz booleana. df.iloc[:2999, :]
● Una función (funciones lambda, df.iloc[-1]
más avanzado)
Pandas
Acceso a los Valores
Basada en índice (index)

df.iloc[ ]
df.iloc[]
Inputs válidos:
● Un número entero, p. Ej. 5. ejemplos:
● Una lista o matriz de números df.iloc[:,0]
enteros [4, 3, 0]. df.iloc[[2,3,5,],2]
● Un slice de datos 1: 7. df.iloc[:, 3:7]
● Una matriz booleana. df.iloc[:2999, :]
● Una función (funciones lambda, df.iloc[-1]
más avanzado)
Pandas
Acceso a los Valores

Selección con Operadores:

df[df.tasas_interes_pm == 38.0]
df.loc[df.tasas_interes_pm > 36]

Ampersand (&) funciona como el and


Línea Vertical (|) funciona como el or

ej: df.loc[(df.tasas_interes_pm == 38.0) & (df.tasas_interes_badlar > 30)]


Pandas
Acceso a los Valores

Selección loc + isin

isin retorna una serie booleana que muestra si tiene o no coincidencia con
los valores pasados.

Combinada con loc, filtra las filas que tienen coincidencia con los valores
pasados.

df.loc[df.tasas_interes_pm.isin(values=[36, 39])]
Pandas
Acceso a los Valores
Resumen
Operación Sintaxis Resultado

Select column df[col] Series

Select row by label df.loc[label] Series

Select row by integer location df.iloc[loc] Series

Slice rows df[5:10] DataFrame

Select rows by boolean vector df[bool_vec] DataFrame

https://pandas.pydata.org/docs/user_guide/dsintro.html#basics-dataframe-sel-add-del
Pandas

Manipulación de Datos:
Faltantes, Reemplazos y Agrupamientos
Pandas
Datos Faltantes

Gran Problema de la Ciencia de Datos

Los datos faltantes se les llama NaN, (Not a Number)

Por defecto, los valores NaN no se incluyen en los cálculos y se les


asigna el tipo float64.

https://pandas.pydata.org/docs/user_guide/missing_data.html#missing-data
Pandas
Datos Faltantes

Paso a Paso: Primero…

Detectando Faltantes

isnull, filtra los valores vacíos → df[df[“columna”].isnull()]

notnull, filtra los valores NO vacíos → df[df[“columna”].notnull()]

https://pandas.pydata.org/docs/user_guide/missing_data.html#missing-data
Pandas
Datos Faltantes
Paso a Paso: Segundo...
Completando faltantes: fillna()
Podemos "completar" valores NA con datos que no son NA de 3 formas:

● Con un valor o texto fijo ej: df.columna.fillna(“texto fijo”)

● Propagando el último dato válido Hacia Adelante Hacia Adelante (Forward)


df.columna.fillna(method=”ffill”)

● Utiliza el próximo dato válido y lo propaga Hacia Atrás (Backward)


df.columna.fillna(method=”bfill”)
https://pandas.pydata.org/docs/user_guide/missing_data.html#missing-data
Pandas
Datos Faltantes
Completando faltantes: Reemplazar Valores no
fillna(method) nulos: replace()
Method Action
df.columna.replace(to_replace="
ffill Fill values forward
valor orig", value="nuevo valor”)
bfill Fill values backward

https://pandas.pydata.org/docs/user_guide/missing_data.html#missing-data
Pandas
Agrupamiento de Datos

Skill muy Necesario en Análisis de Datos.

Involucra uno o más de los siguientes pasos:

1. Dividir los datos en grupos/dimensiones según algunos criterios

1. Aplicar una función a cada grupo de forma independiente

1. Combinar los resultados en una estructura de datos

https://pandas.pydata.org/docs/user_guide/groupby.html#groupby
Pandas
Agrupamiento de Datos

Por 1 variable: groupby

1 función: df.groupby(“columna1”).sum() #se puede usar .min() . max() .apply()

Funciones simultáneas: df.groupby(“columna1”)[“columna2”, “columna3”].agg(["mean",


"min", "max", "median",“len”], axis="rows")

https://pandas.pydata.org/docs/user_guide/groupby.html#groupby
Pandas
Agrupamiento de Datos (avanzado)
Por más de 1 variable → Multi-indexes
1 función:
df.groupby(['columna1', 'columna2']).sum() #.min() . max() .apply()

Funciones simultáneas: método agg


df.groupby(['columna1', 'columna2']).agg(
["mean", "min", "max", "median"], axis="rows"
)

https://pandas.pydata.org/docs/user_guide/groupby.html#groupby
https://pandas.pydata.org/pandas-docs/stable/user_guide/advanced.html
Espacio de Preguntas!
Muchas gracias!!
Qué veremos hoy?
Clase 6

1. Pandas 2.0:
a. Funciones de Resumen: Estadística Descriptiva
b. Agregado, Combinación y Reshaping de Data
c. Otros métodos útiles: rolling, ewm, shift, pivot, melt, sort_values, sort_index, multi-indices, cummax,
cummin, cumprod, cumsum, concat, set_index, drop, etc..
Pandas
Repaso de clase anterior

1. Pandas 1.0:
a. Introducción a la librería más popular para análisis de datos
b. Tipos de Objetos: series y dataframe (df)
c. Creación de un dataframe
d. Carga de Archivos Locales y del Drive
e. Tipos de Datos
f. Funciones de Inspección
g. Acceso a los Valores del df
h. Manipulación de Datos: Faltantes, Reemplazos y Agrupamientos
Pandas

Funciones de Resumen:
Estadística Descriptiva
Pandas
Funciones de Resumen
La estadística descriptiva es una disciplina que se encarga de recoger, almacenar,
ordenar, realizar tablas o gráficos y calcular parámetros básicos sobre el conjunto de
datos.

La estadística descriptiva se puede calcular fácilmente y aplicar a:

● todo el conjunto de datos,


● a una serie de datos o columnas
● una ventana de datos o
● un agrupamiento de datos. por categorías. (enfoque dividir-aplicar-combinar)
https://pandas.pydata.org/docs/reference/api/pandas.Series.fillna.html
https://economipedia.com/definiciones/estadistica-descriptiva.html
Pandas
Estadística descriptiva
Aplicar 1 a 1 o juntas. Iremos por el primer enfoque

df.columna.mean()
df.columna.max()
df[[“columna1”, “columna2”]].median()

https://pandas.pydata.org/docs/getting_started/intro_tutorials/06_calculate_statistics.html#min-tut-06-stats
Pandas
Estadística descriptiva
Aplicar juntas Varias Funciones Estadísticas:

Método Describe → uno de los más poderosos de Pandas

df[[“columna1”, “columna2”]].describe() → conteo, media, desviación estándar,


mínimo, máximos y cuartiles (25%, 50% o mediana y 75%)

https://pandas.pydata.org/docs/getting_started/intro_tutorials/06_calculate_statistics.html#min-tut-06-stats
Pandas
Estadística descriptiva
Aplicar juntas Varias Funciones Estadísticas: Función agg

df.agg(["mean", "min", "max", "median", "skew", "kurt"], axis="rows")

https://pandas.pydata.org/docs/getting_started/intro_tutorials/06_calculate_statistics.html#min-tut-06-stats
https://medium.com/@atanudan/kurtosis-skew-function-in-pandas-aa63d72e20de
Pandas
Estadística descriptiva
Aplicar a un Agrupamiento:

df.groupby(“columna”).mean()

1. Split: separar en grupos


2. Apply: aplicar una función a cada grupo
3. Combine: Combinar los Resultados en una nueva estructura
4. Los pasos de 2 y 3, pandas los hace juntos

https://pandas.pydata.org/docs/getting_started/intro_tutorials/06_calculate_statistics.html#min-tut-06-stats
Pandas
Estadística descriptiva
Conteo de Valores Agrupados: value_counts(), count() y size()

df[“columna”].value_counts()
df.groupby(“columna”).count()

https://pandas.pydata.org/docs/getting_started/intro_tutorials/06_calculate_statistics.html#min-tut-06-stats
Pandas
Function Description Function Description

count Number of non-NA observations abs Absolute Value

sum Sum of values prod Product of values

mean Mean of values std Bessel-corrected sample standard deviation

mad Mean absolute deviation var Unbiased variance

median Arithmetic median of values sem Standard error of the mean

min Minimum skew Sample skewness (3rd moment)

max Maximum kurt Sample kurtosis (4th moment)

mode Mode quantile Sample quantile (value at %)

cummax y Cumulative maximum and minimum cumsum, Cumulative sum and product
cummin cumprod
Pandas

Agregado, Combinación y Reshaping de Data


Pandas
Agregado de Data
En Análisis y Ciencia de Datos, regularmente se requiere la creación de nuevas
representaciones de información (nuevas columnas) en el dataset, mediante
combinación o aplicado de funciones a columnas existentes.

https://pandas.pydata.org/docs/getting_started/intro_tutorials/05_add_columns.html#min-tut-05-columns
Pandas
Agregado de Data
En Pandas los valores de la nueva columna se calculan directamente.

No es necesario hacer un loop fila por fila.

○ Ejemplos con operadores matemáticos:


df[“ratio”] = df[“columna1”] / df[“columna2”] #ratio entre columnas
df.raiz_cuadrada = df.columna1 ** 0.5

○ Ejemplos con operadores lógicos: df[“revisar”] = df[“columna1”] > 100

○ Ejemplo con valores : df[“fijo”] = “valor_fijo”


Pandas
Combinando DataSets
Es muy habitual tener que combinar datasets
Por ejemplo :
● series de tiempo
● tenemos los datos en varios archivos excel (límite de filas)
Pandas
Combinando DataSets
Función concat()

Es el método más simple. Apila los elementos de diferentes objetos que tienen las
mismas columnas (ejemplo varios excel)

pd.concat([df1, df2])
Pandas
Reshaping de Data
df.pivot() Devuelve un df resumido por los valores únicos de determinada columna.

https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.pivot.html
Pandas
Reshaping de Data
df.melt(id_vars=) Hace el opuesto de pivot y devuelve un df de formato ancho, a largo

https://pandas.pydata.org/docs/reference/api/pandas.melt.html
Visualizaciones en Pandas
Pandas
Visualizaciones en Pandas
Se pueden hacer gráficos básicos y rápidos dentro de Pandas

Hay otras librerías específicas: matplotlib, seaborn y plotly, entre otras


Pandas
Visualizaciones en Pandas
df.plot()

● Este método se puede aplicar tanto a df


como a series
● Nos devuelve un gráfico de líneas

https://pandas.pydata.org/docs/user_guide/visualization.html
Pandas
Visualizaciones en Pandas
df.plot(kind=”area”)

● puede mostrar otros tipos de gráficos


usando el parámetro kind

https://pandas.pydata.org/docs/user_guide/visualization.html
Pandas
Visualizaciones en Pandas
df.plot.kind() otros tipos de gráficos con el parámetro kind

1. ‘bar’ or ‘barh’ plot.bar()


2. ‘hist’ for histogram plot.hist()
3. ‘box’ for boxplot plot.box()
4. ‘kde’ for density plots plot.kde() →
5. ‘area’ for area plots
6. ‘scatter’ for scatter plots
7. ‘hexbin’ for hexagonal bin plots
8. ‘pie’ for pie plots

https://pandas.pydata.org/docs/user_guide/visualization.html
Pandas
Visualizaciones en Pandas
df.hist() Los histogramas representan la distribución de la data.
Utilizando el método hist, cada columna tiene su histograma.

https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.hist.html
Pandas
Visualizaciones en Pandas

Con el parámetro Subplots se consigue representar cada


series del df en un minigráfico diferente.

El Tamaño del gráfico se configura rápidamente con el


parámetro figsize

ej:
df.plot(subplots=True, figsize= (8,8))

¡Vamos al Colab!
Pandas
Visualizaciones en Pandas

Con el parámetro Subplots se consigue representar cada


series del df en un minigráfico diferente.

El Tamaño del gráfico se configura rápidamente con el


parámetro figsize

ej:
df.plot(subplots=True, figsize= (8,8))

¡Vamos al Colab!
Pandas
Visualizaciones en Pandas
Categoría Tipo de gráfico Descripción

Tendencias Gráfico de líneas Muestra cómo cambia una variable numérica en el tiempo

Relación Diagrama de dispersión Muestra la relación entre dos variables numéricas en un plano cartesiano

Relación Diagrama de dispersión con línea de regresión Muestra la relación entre dos variables numéricas y ajusta una línea de regresión para modelar la relación

Relación Diagrama de dispersión categórico Muestra la relación entre una variable numérica y una variable categórica

Distribución Histograma Muestra la distribución de una variable numérica en intervalos (bins)

Distribución Diagrama de caja y violín Muestra la distribución de una variable numérica agrupada por una variable categórica

Distribución Mapa de calor Muestra los valores de una matriz o un dataframe como colores en una cuadrícula
Espacio de Preguntas!
Muchas gracias!!
Qué veremos hoy?
Clase 7

1. Librerías de Visualización:
a. Seaborn
b. Plotly: gráficos dinámicos
2. Conexiones a APIs con Info de Mercado
Pandas
Repaso de clase anterior

1. Pandas 2.0:
a. Funciones de Resumen: Estadística Descriptiva
b. Agregado, Combinación y Reshaping de Data
c. Otros métodos útiles
Tipos de Gráficos
Seaborn
Visualizaciones en Seaborn
Los tipos de gráficos se pueden dividir en tres categorías amplias:

1. Tendencias: para ver el patrón de cambio.


1. sns.lineplot: los gráficos de líneas son los mejores para mostrar tendencias a lo largo de un período de tiempo, y se pueden usar
varias líneas para mostrar tendencias en más de un grupo.
2. Relación: para entender las relaciones entre las variables en tus datos.
1. sns.barplot: los gráficos de barras son útiles para comparar cantidades correspondientes a diferentes grupos.
2. sns.heatmap: los mapas de calor se pueden usar para encontrar patrones codificados por colores en tablas de números.
3. sns.scatterplot: los diagramas de dispersión muestran la relación entre dos variables continuas; si están codificados por colores,
también podemos mostrar la relación con una tercera variable categórica.
4. sns.regplot: incluir una línea de regresión en el diagrama de dispersión para ver cualquier relación lineal entre dos variables.
5. sns.lmplot: para dibujar múltiples líneas de regresión, si el diagrama de dispersión tiene múltiples grupos codificados por colores.
6. sns.swarmplot: los diagramas de dispersión categóricos muestran la relación entre una variable continua y una variable categórica.
3. Distribución: para mostrar los posibles valores que podemos esperar ver en una variable y qué probables son.
1. sns.histplot: los histogramas muestran la distribución de una sola variable numérica.
2. sns.kdeplot: los gráficos KDE (o gráficos KDE 2D) muestran una distribución suave estimada de 1 o 2 variables numéricas.
Seaborn
Visualizaciones en Seaborn
Plotly

Visitemos su página oficial

Plotly Python Graphing Library


Conexiones a APIs de Mercado
ALPACA

1. Registrarse: https://alpaca.markets/

1. Documentación: https://alpaca.markets/docs/

1. APP: https://app.alpaca.markets/paper/dashboard/overview

¡Vamos al Colab!
Conexiones a APIs de Mercado
ALPACA

1. Registrarse: https://www.alphavantage.co/

1. Documentación: https://www.alphavantage.co/documentation/

¡Vamos al Colab!
Muchas gracias!!
Qué veremos hoy?
Clase 8

1. Librería Numpy
2. Librerías de Visualización:
a. Matplotlib: la más completa del universo python
3. Presentación de notebooks
4. Conclusiones y Pasos a Seguir
Repaso de clase anterior

1. Librerías de Visualización:
a. Seaborn
b. Plotly: gráficos dinámicos
c. Matplotlib: la más completa del universo python
2. Conexiones a APIs con Info de Mercado
NumPy
Presentación
Es la librería de computación
numérica más utilizada.

Aplicaciones en Ciencia de Datos,


Machine Learning.

Otras Librería posteriores se


basaron en NumPy (ej PyTorch)

Introduction to Numerical Computing with NumPy


NumPy El Array
El objeto principal de NumPy es el array multidimensional homogéneo.

Es una matriz de elementos (generalmente números), todos del mismo tipo (int o float).
En NumPy, las dimensiones se llaman ejes (axes).

Un arreglo consume menos memoria para almacenar datos y al ser del mismo tipo de datos
el código se optimiza aún más.

Un array de 1 dimensión/eje puede verse como una lista. Un array de n>1 dimensiones,
puede verse como una lista de listas, pero no son el mismo tipo de objeto.

1 dimensiones: 2 dimensiones:
[1,2, 3,] [ [1., 0., 0.],
[0., 1., 2.] ]
NumPy El Array
Formas de crear un array
Hay varias funciones: np.array(), np.zeros(), np.ones(), np.empty(), np.arange(), np.linspace()
Implementamos np.array() con una expresión simple
import numpy as np
a = np.array([1, 2, 3])

otra bastante utilizada es np.arange(), que hay que combinar con método reshape()
a = np.arange(25).reshape(5,5) #hacemos un array de 25 elementos de 5 x 5

Otra es np.linspace() similar a la anterior, devuelve una secuencia de números espaciados en una muestra.
ls = numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)

¡Notebook ejercicios!
NumPy Operaciones Vectoriales
Podemos realizar:

. operaciones matemáticas entre arrays (“element-wise”)


. operaciones matemáticas entre un array y una constante (un número)

A esto se le llama operaciones vectoriales

Todo esto sin tener que hacer for loops y con optimización en el uso de recursos

¡Notebook ejercicios!
NumPy
El Array
Un vistazo a los arrays
de 2 dimensiones

NumPy quickstart — NumPy v2.0.dev0 Manual


NumPy
Funciones Universales
Son funciones matemáticas conocidas como seno, coseno y exponencial.

Estas funciones operan elemento por elemento (“element-wise) en un array, produciendo


otro array como resultado.
Estas son todas las funciones universales disponibles:
all, any, apply_along_axis, argmax, argmin, argsort, average, bincount, ceil,
clip, conj, corrcoef, cov, cross, cumprod, cumsum, diff, dot, floor, inner, invert,
lexsort, max, maximum, mean, median, min, minimum, nonzero, outer, prod, re, round,
x
sort, std, sum, trace, transpose, var, vdot, vectorize, where

NumPy quickstart — NumPy v2.0.dev0 Manual


NumPy
Módulo Random
El módulo numpy.random implementa generadores de números aleatorios, con la
capacidad de obtenerlos desde variedad de distribuciones de probabilidad.

Se crea una instancia de Generator con default_rng y llamarán a los diversos métodos en
ella

x
numpy.random.Generator.normal — NumPy v1.25 Manual

Random Generator — NumPy v1.25 Manual


¡Notebook ejercicios!
MatPlotLib
Inicio
Matplotlib gráfica datos en Figuras mediante el módulo pyplot y pueden contener:
. uno o más Ejes,
. un área donde se pueden especificar puntos en términos de coordenadas x-y (o
theta-r en un gráfico polar, x-y-z en un gráfico 3D, etc.)

import matplotlib as mpl


import matplotlib.pyplot as plt
import numpy as np

fig, ax = plt.subplots() # Create a figure containing a single axes.


ax.plot([1, 2, 3, 4], [1, 4, 2, 3]) # Plot some data on the axes.
#plt.show()
MatPlotLib
Partes de una Figura
● La figura (figure) es el contenedor de los
gráficos, que se pueden crear y personalizar
con distintas funciones de pyplot.
● Los ejes (axes) son la región donde se
dibujan los datos, que se pueden crear y
personalizar con distintas funciones de
pyplot. Cada eje tiene dos o tres axis que
representan los ejes coordenados.
● Los axis son objetos que permiten
personalizar los ejes.
● Los artist son son el objeto que representa
cualquier elemento visible (ej: textos,
flechas)
Quick start guide — Matplotlib 3.7.2 documentation
MatPlotLib
#Explicita
Estilos de Código x = np.linspace(0, 2, 100) # Sample data.

# Note that even in the OO-style, we use `.pyplot.figure` to create the Figure.
fig, ax = plt.subplots(figsize=(5, 2.7), layout='constrained')
Hay dos formas de usar Matplotlib: ax.plot(x, x, label='linear') # Plot some data on the axes.
● Crear explícitamente Figuras y Ejes, y llamar a ax.plot(x, x**2, label='quadratic') # Plot more data on the axes...
ax.plot(x, x**3, label='cubic') # ... and some more.
métodos sobre ellos (“orientado a objetos”). ax.set_xlabel('x label') # Add an x-label to the axes.
ax.set_ylabel('y label') # Add a y-label to the axes.
ax.set_title("Simple Plot") # Add a title to the axes.
ax.legend() # Add a legend.
● Confiar en pyplot para crear y administrar
implícitamente las Figuras y los Ejes, usando Implícita
x = np.linspace(0, 2, 100) # Sample data.
métodos de pyplot para graficar. plt.figure(figsize=(5, 2.7), layout='constrained')
plt.plot(x, x, label='linear') # Plot some data on the (implicit) axes.
plt.plot(x, x**2, label='quadratic') # etc.
plt.plot(x, x**3, label='cubic')
plt.xlabel('x label')
¡Vamos al Colab! plt.ylabel('y label')
plt.title("Simple Plot")
plt.legend()
Quick start guide — Matplotlib 3.7.2 documentation
MatPlotLib
Recursos
Ejemplos: Examples — Matplotlib 3.7.2 documentation

Más Recursos: External resources — Matplotlib 3.7.2 documentation

¡Notebook Integrador!
Conclusiones y Pasos a Seguir
Cómo Seguir? Proyectos, Práctica (diaria), Intereses, cometer errores

Qué hacer ante Dudas que Surjan a futuro? Google, grupos, tutoriales
(documentación y fuentes confiables), chatGPT, prueba y error, consulta a colegas
Recursos para continuar aprendiendo Python
Escrito:
SpanishLanguage - Python → documentación oficial

pamoroso/free-python-books: Python books free to read online or download → Libros Gratis (eng)

https://pandas.pydata.org/Pandas_Cheat_Sheet.pdf → Cheat Sheet

pandas: powerful Python data analysis toolkit → Docu completa: más de 3600 páginas…

Más “cheat sheets”!


https://drive.google.com/file/d/1g4vUC9OGNp1QaC1OX4CqokEInEOCV9fC/view?usp=sharing

https://drive.google.com/file/d/1XRTBBrNqFabKwYK9RDyiJVP32xpbkcHp/view?usp=sharing

Youtube:
Análisis de Datos en Python → Guillermo Izquierdo

Pandas | VideoTK | Python → cct México

Aprender a programar → Codin eric


Muchas gracias!!

También podría gustarte