Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
Introducción a la programación con Python (Parte I) Clase 02. Data Science ¿DUDAS DEL ON-BOARDING? MIRALO AQUI RECUERDA PONER A GRABAR LA CLASE Realizar una primera aproximación al lenguaje de programación Python. Conocer las distintas formas de desarrollo con Python. OBJETIVOS DE LA CLASE MAPA DE CONCEPTOS MAPA DE CONCEPTOS CLASE 2 Formas de desarrollo con Python Interpretado vs Compilado Toma de contacto con Python Programación y lenguajes Python como lenguaje IPython y notebooks Python tradicional Funciones Estructuras Tipos de datos Basics: Variables, asignación, operaciones Clase 2 Introducción a la programación con Python (Parte I) Clase 3 Introducción a la programación con Python (Parte II) CRONOGRAMA DEL CURSO Clase 1 La necesidad de información en la Industria 4.0 TRANSFORMACIÓN DIGITAL ESTRATEGIA DATA-DRIVEN NOCIONES BÁSICAS PRÁCTICA CON FUNCIONES TOMA DE CONTACTO CON PYTHON Idea: Plantear por objetivos Desde el principio: Programación y Python ¿Qué es la programación? “Programar es darle instrucciones a la computadora para que realice una función específica.” ¿Qué es la programación? La programación es una forma de ejecutar un algoritmo. Un algoritmo es una secuencia de pasos que lleva a un resultado. Una receta es un algoritmo. Si se sigue el algoritmo, se llega al resultado. Programa y computadora La computadora nació para resolver cálculos. La programación es un complemento para la computadora. Es una forma de que la computadora entienda el funcionamiento de un algoritmo y lo ejecute. La computadora entiende ceros y unos (lenguaje binario), nosotros no. Por lo tanto, un programa traduce un lenguaje humano a lenguaje binario. Programación y lenguajes No existe un solo lenguaje que solucione todos los problemas Cada lenguaje resuelve un conjunto de problemas posibles: Empresariales, Web, etc. Para Data Science, existen algunos lenguajes que funcionan muy bien: Python, R, Julia y Scala son algunos de ellos.\ Python R Julia Scala Python rocks! Python es el lenguaje más solicitado en las búsquedas laborales relacionadas con Data Science y se ubica entre el segundo y tercer puesto en 2021 de acuerdo a varios rankings de lenguajes de desarrollo general (no sólo Data Science). En otras palabras, Python no puede faltar en un portfolio de Data Science. ¿Interpretado o Compilado? PYTHON ES UN LENGUAJE INTERPRETADO, ESTO QUIERE DECIR QUE: Usa un programa intérprete que traduce en tiempo casi real nuestras órdenes a binario. La traducción se hace línea por línea. Podemos probar código “de a pedacitos”. El lenguaje compilado se traduce todo junto al final. No es simplemente una mejora, es una forma de trabajar muy útil para Data Science. Python en pocas palabras (PYTHON IN A NUTSHELL) Lenguaje Open Source (un código abierto y accesible diseñado para que cualquier pueden ver, modificar y distribuirlo). Su fuerte es la simplicidad y la facilidad para compartir código. Cuenta con 3 componentes: Intérprete: programa intérprete, traductor a binario. IDE: entorno de desarrollo, lugar donde escribiremos código. Paquetes: conjuntos de funciones pre-armadas para problemas habituales. Formas de desarrollo con Python 🔗 Guía de instalación de Python con Miniconda, Jupyter notebooks y Google Colab Python tradicional Tradicionalmente Python puede desarrollarse en Anaconda, o en su versión simplificada, Miniconda. Además, puede utilizarse de varias otras formas. La forma más básica es escribiendo python en la terminal, lo que abre un entorno de trabajo dentro de la misma terminal. ⚠ NO es la forma más cómoda, ni la más utilizada. Otra forma más útil es usando Python interactivo (IPython). Puede accederse escribiendo ipython en la terminal. ⚠ No aporta muchas mejoras si se usa de esa forma. ¡Existe una forma mejor! 💪 IPython y notebooks Las notebooks siguen siendo IPython, pero con vitaminas 🚀 Escribimos código en el navegador que resulta ser el IDE. El código pasa por el mismo intérprete que el que usa la terminal, pero todo se trabaja en el navegador. El código se escribe en cajas de texto que pueden ejecutarse de a una o todas juntas. El conjunto total de cajas de texto es una notebook. 👉 Esta configuración SÍ es de las más utilizadas para Data Science. ‹#› Primeros pasos con Python Crear un Notebook vacío Crear una variable nombre y asignarle su nombre ¿Qué ocurre si no ponemos las comillas?¿Y si en lugar de comillas simples usamos dobles? Crear una variable edad y asignarle su edad ¿Qué ocurre si ponemos el número entre comillas? ¿Cuál será la diferencia? ¿Y si ponemos un número “con coma”? Imprimir en pantalla su nombre y edad ¿Alguna forma es mejor? Tiempo estimado: 15 minutos. Si alcanza, dejar que experimente solos un rato. Mentores: mencionar que las celdas se ejecutan con shift + enter o con el botón con forma de “play” del menú superior o a la izquierda de la celda en Colab. Empezamos dando algunos ejercicios y demostraciones sencillas, sin formalizar todavía ningún tipo de dato. El objetivo es que aquellos alumnos que nunca programaron empiecen a ver de qué se trata. Incentivamos a que los alumnos charlen con sus compañeros mientras hacen estos ejercicios, así los más avanzados ayudan a los más nuevos. ¿Qué ocurre si no ponemos las comillas? Mostrar que python nos tira un error. Explicar que es MUY importante leer los errores, ya que nos dan información sobre lo que está sucediendo. ¿Qué ocurre si ponemos el número entre comillas?¿Cuál será la diferencia?¿Y si ponemos un número “con coma”? Todavía no formalizamos, pero mencionamos la diferencia entre un string, un float y un entero. ¿Alguna forma es mejor? El objetivo de esta pregunta es que vean que no hay una única forma de hacer las cosas, pero a veces algunas son más convenientes, dependiendo del contexto. NOCIONES BÁSICAS DE PROGRAMACIÓN Basics: Variables, asignación, expresiones Pensemos en una fórmula Pensemos en una fórmula En la expresión x + y = z queremos representar que la suma de los números x e y dará como resultado el número z Si lo quisiéramos programar, podríamos pensarlo así: Ingresar un número, que cumplirá el rol de la x Ingresar un número, que cumplirá el rol de la y Decirle a la computadora que efectúe la suma de x e y Al resultado lo haremos cumplir el rol de la z Mostrar al usuario el valor de z como resultado Pensemos en una fórmula Toda vez que a un símbolo le damos un valor (x = 2) estamos haciendo una asignación. En Python: x = 2 #asignamos números y = 3 z = x + y #realizamos la suma z #en z se encuentra el resultado 5 #se muestra el resultado Cada parte del código “compuesta” que represente un valor concreto (x + y) es una expresión. Este razonamiento es análogo a las expresiones matemáticas. Objetos y punteros Python es un lenguaje orientado a objetos Es así que en Python todo es un objeto, o sea, cuenta con: Datos Metadatos, atributos o propiedades (un punto y una palabra sin paréntesis): X.atributo 👉 Un atributo caracteriza al dato Funcionalidad o métodos (un punto y una palabra con paréntesis): x.método() 👉 Un método es algo que el dato puede hacer, por lo tanto al ejecutarlo le estamos pidiendo al dato que ejecute una acción Aquí, real e imag son propiedades de x que muestran su parte real y su parte imaginaria. Por otra parte, el ejemplo de la sección anterior nos muestra la forma de trabajar con punteros (pointers). A diferencia de otros lenguajes donde las variables se comportan como contenedores de datos, las variables en Python son punteros. Esto significa que no contienen un valor, sino que apuntan a un dato que se encuentra en la memoria. De esta forma, si asignamos una variable a otra (y = x), simplemente le estamos diciendo a ambas que apunten al mismo dato (la lista [1, 2, 3]). En su forma más específica, la operación “=” realiza la conexión entre el puntero y el dato.En cambio, la aplicación de métodos (por ejemplo append()) cambia el dato de destino. Esta diferencia es sutil y en la práctica no afecta el trabajo de Data Science. No obstante trae mejoras sustanciales en la performance y es importante tenerla en cuenta para no cometer errores en la programación. Objetos y punteros x=1.0 x.is_integer() # ¿es x un entero? se lo preguntamos con el método is_integer() x=1.4 x.is_integer() # ¿y ahora? se lo preguntamos de vuelta print(x.real,x.imag) # miramos los atributos de x, en este caso su parte real # y su parte imaginaria Objetos y punteros Las variables en Python no contienen los datos, sino que apuntan a los datos. Esta es la forma de trabajo de los punteros, lo que hace que el lenguaje sea más eficiente. Aquí, real e imag son propiedades de x que muestran su parte real y su parte imaginaria. Por otra parte, el ejemplo de la sección anterior nos muestra la forma de trabajar con punteros (pointers). A diferencia de otros lenguajes donde las variables se comportan como contenedores de datos, las variables en Python son punteros. Esto significa que no contienen un valor, sino que apuntan a un dato que se encuentra en la memoria. De esta forma, si asignamos una variable a otra (y = x), simplemente le estamos diciendo a ambas que apunten al mismo dato (la lista [1, 2, 3]). En su forma más específica, la operación “=” realiza la conexión entre el puntero y el dato. En cambio, la aplicación de métodos (por ejemplo append()) cambia el dato de destino. Esta diferencia es sutil y en la práctica no afecta el trabajo de Data Science. No obstante trae mejoras sustanciales en la performance y es importante tenerla en cuenta para no cometer errores en la programación. ¿Cuáles son las salidas de los siguientes bloques de código? ¡ESCRÍBELO EN EL CHAT! PRÁCTICA RÁPIDA En la siguiente slide se encuentra la imagen ampliada. Recomendamos que las respuestas se hagan de a una por línea de código. Simplemente es la imagen ampliada. ¿No notaste algo raro en el ejercicio anterior...? ☕ BREAK ¡5/10 MINUTOS Y VOLVEMOS! Objetos y punteros Cuando operamos sobre una variable (método) operamos sobre el objeto al que apunta. Cuando realizamos una asignación (=) conectamos (apuntamos) la variable al objeto. Aquí no cambiamos el objeto. Objetos y punteros x = [1, 2, 3] # x es una lista y = x # el objeto al que apunta x ([1, 2, 3]) ahora es también # apuntado por y print(y is x) # x e y son el mismo objeto (True) print(x,y) # [1, 2, 3] [1, 2, 3] x.append(4) # aquí operó sobre el objeto [1, 2, 3] apuntado por x. # Los métodos se identifican luego de un punto (x.método()) print(y) # como x e y apuntan al mismo objeto, y refleja los cambios x = "hola" # al realizar asignación, ahora x apunta al objeto texto # (string) "hola" print(x is y) # x e y ahora no apuntan al mismo objeto (False) print(x,y) # x e y apuntan a dos objetos diferentes (“hola” [1, 2, 3, 4]) Objetos y punteros La diferencia es muy sutil y en general no afecta el trabajo de Data Science. No obstante, no todos los lenguajes se comportan así. ⚠ Hay que tener en cuenta esto para no cometer errores. Un método comienza por un punto después de la variable. El método modifica el objeto apuntado por la variable. La variable no es, ni contiene al objeto. La asignación “conecta” a la variable con el objeto apuntado. Aquí, real e imag son propiedades de x que muestran su parte real y su parte imaginaria. Por otra parte, el ejemplo de la sección anterior nos muestra la forma de trabajar con punteros (pointers). A diferencia de otros lenguajes donde las variables se comportan como contenedores de datos, las variables en Python son punteros. Esto significa que no contienen un valor, sino que apuntan a un dato que se encuentra en la memoria. De esta forma, si asignamos una variable a otra (y = x), simplemente le estamos diciendo a ambas que apunten al mismo dato (la lista [1, 2, 3]). En su forma más específica, la operación “=” realiza la conexión entre el puntero y el dato. En cambio, la aplicación de métodos (por ejemplo append()) cambia el dato de destino. Esta diferencia es sutil y en la práctica no afecta el trabajo de Data Science. No obstante trae mejoras sustanciales en la performance y es importante tenerla en cuenta para no cometer errores en la programación. Operadores Los operadores permiten trabajar sobre las variables, a la manera de las operaciones matemáticas. Cada operador da un resultado como salida. Identificamos 4 tipo de operadores: Operadores aritméticos Operadores de asignaciones Operadores de identidad y pertinencia Operadores aritméticos Aritméticos a + b Suma a - b Resta a * b Multiplicación a / b División a // b División entera (resultado sin decimal) a % b Módulo (resto de la división entera) a ** b Exponenciación -a Negativo Los operadores aritméticos son directamente operaciones matemáticas estándar. Operadores de asignaciones Asignaciones a += b a = a + b a -= b a = a - b a *= b a = a * b a /= b a = a / b a //= b a = a // b a %= b a = a % b a **= b a = a ** b Los asignadores simplifican operadores aritméticos comunes. Operadores de comparación Comparadores a == b a igual a b a != b a distinto de b a < b a menor a b a > b a mayor a b a <= b a menor o igual que b a >= b a mayor o igual que b Los comparadores dan resultados lógicos (si/no, true/false) Operadores de identidad y pertenencia Identidad y pertenencia a is b a es el mismo objeto que b a is not b a no es el mismo objeto que b a in b a está contenido en b a not in b a no está contenido en b Los operadores de identidad y pertenencia verifican relaciones entre objetos. Dentro de esta categoría, los operadores “in”, como casos particulares, buscan objetos dentro de listas. ¡Son muy útiles! ¿QUIERES SABER MÁS? TE DEJAMOS MATERIAL AMPLIADO DE LA CLASE Guía de instalación de Python con Miniconda, Jupyter notebooks y Google Colab | Guillermo Leale Disponible en nuestro repositorio. https://learnxinyminutes.com/docs/python3/ - Exclusivo sobre programación en Python, sin mucho contexto y directo al grano. Minimalista, pero detallado. https://www.tutorialsteacher.com/python - Muy completo. Útil para “tener a mano”. big data, de Walter Sosa Escudero - Libro Divulgativo Disponible en nuestro repositorio. ¿PREGUNTAS? ¡MUCHAS GRACIAS! Resumen de lo visto en clase hoy: Programar en Python: ¿de qué se trata y qué hay que tener en cuenta? OPINA Y VALORA ESTA CLASE #DEMOCRATIZANDOLAEDUCACIÓN
Compartir