(En Procesos) Python para Ciencia de Datos, Inteligencia Artificial y Desarrollo
(En Procesos) Python para Ciencia de Datos, Inteligencia Artificial y Desarrollo
Ciencia de
Datos, IA y
Desarrollo
CONCEPTOS BÁSICOS PYTHON
#Introducción a Python
Python es ideal para ti porque utiliza una sintaxis clara y legible, puedes desarrollar los mismos
programas de otros lenguajes con menos código usando Python. Para los principiantes es un buen
lenguaje para comenzar debido a la enorme comunidad global y la riqueza de la documentación.
Python es útil en muchas áreas, incluida la ciencia de datos, la IA y el aprendizaje automático, el desarrollo
web y los dispositivos de Internet de las Cosas (IoT), como Raspberry Pi.
Entre las grandes organizaciones que utilizan Python en gran medida se encuentran IBM, Wikipedia, Google,
Yahoo, el CERN, la NASA, Facebook, Amazon, Instagram, Spotify y Reddit. Python cuenta con el apoyo de
una comunidad global y está dirigido por la Python Software Foundation.
Python es un lenguaje de programación de alto nivel y propósito general que puede aplicarse a muchas
clases diferentes de problemas. Cuenta con una amplia biblioteca estándar que proporciona herramientas
adecuadas para muchas tareas diferentes, como bases de datos, automatización, Web scraping,
procesamiento de texto, procesamiento de imágenes, aprendizaje automático y análisis de datos.
Para la ciencia de datos, puede utilizar las bibliotecas de computación científica de Python como Pandas,
NumPy, SciPy y Matplotlib. Para inteligencia artificial, cuenta con TensorFlow, PyTorch, Keras y
Scikit-learn. Python también puede utilizarse para el Procesamiento del Lenguaje Natural (PLN)
mediante el Natural Language Toolkit (NLTK).
#Introducción a Jupyter
Jupyter es una aplicación web de libre acceso que permite crear y compartir documentos que
contienen ecuaciones, codificación en vivo, visualizaciones y texto narrativo. Jupyter ofrece un
entorno informático interactivo compatible con varios lenguajes de programación, como Python, R, Julia, etc.,
pero brilla más cuando se utiliza con Python. Jupyter gira en torno a los notebooks, documentos que
contienen una mezcla de código, visualizaciones, texto narrativo, ecuaciones y contenido multimedia. Estos
Notebooks permiten a los usuarios crear, compartir y colaborar en proyectos computacionales sin problemas.
Tipos
#Tipos
Un tipo es la forma en que Python representa diferentes tipos de datos. Pueden ser enteros como 11,
números reales como 21.213, incluso pueden ser palabras. Los números enteros, los números reales y
las palabras pueden expresarse como diferentes tipos de datos.
La siguiente tabla resume tres tipos de datos para los últimos ejemplos.
Los flotantes son números reales. Incluyen los números enteros, pero también los números intermedios.
Consideremos los números entre 0 y 1, podemos seleccionar números entre ellos, estos números son
flotantes. Del mismo modo, considere los números entre 0,5 y 0,6. Podemos seleccionar los números entre
ellos. Podemos seleccionar números entre ellos. También son números flotantes. Podemos continuar el
proceso haciendo zoom para diferentes números. Por supuesto, hay un límite, pero es bastante pequeño.
Un booleano puede tomar dos valores, el primer valor es True, sólo recuerda que usamos una T
mayúscula, los valores booleanos también pueden ser False con una F mayúscula. Usando el
comando type sobre un valor booleano, obtenemos el término bool, es la abreviatura de Boolean, si
convertimos un booleano True en un entero o float, obtendremos un 1, si convertimos un booleano
False en un entero o float, obtendremos un 0 y viceversa si convertimos 1 y 0 en booleanos obtendremos
True y False..
Expresiones y Variables
Expresiones y Variables
Las expresiones son operaciones que python realiza, por ejemplo, operaciones aritméticas básicas como
sumar varios números.
Python sigue convenciones matemáticas cuando realiza expresiones matemáticas, las siguientes
operaciones tienen un orden diferente, en ambos casos, Python realiza la multiplicación, luego la suma, para
obtener el resultado final.
Podemos utilizar variables para almacenar valores, en este caso, asignamos un valor de 1 a la variable
mi_variable utilizando el operador de asignación, es decir, el signo igual, a continuación, podemos utilizar
el valor en otra parte del código escribiendo el nombre exacto de la variable.
Podemos almacenar los resultados de expresiones, por ejemplo, sumamos varios valores y asignamos el
resultado a x, x almacena ahora el resultado.
Es una buena práctica usar nombres de variables significativos; así, no tienes que estar pendiente de lo
que hace la variable.
Operaciones con Cadenas
En Python:
● Una cadena es una secuencia de caracteres, una cadena está contenida entre dos comillas,
también puede utilizar comillas simples.
● Una cadena puede tener espacios o dígitos.
● Una cadena también puede tener caracteres especiales.
Podemos enlazar o asignar una cadena a otra variable, es útil pensar en una cadena como una
secuencia ordenada.
Se puede acceder a cada elemento de la secuencia utilizando un índice representado por la matriz de
números, se puede acceder al primer índice de la siguiente manera: Podemos acceder al índice 6. Además,
podemos acceder al índice 13.
El último elemento viene dado por el índice negativo uno, el primer elemento puede obtenerse mediante el
índice negativo 15 y así sucesivamente.
Podemos enlazar una cadena a otra variable. Es útil pensar en la cadena como una lista o tupla.
Podemos tratar la cadena como una secuencia y realizar operaciones de secuencia. También podemos
introducir un valor de stride de la siguiente manera:
El dos indica que seleccionaremos cada dos variables.
También podemos incorporar slicing. En este caso, devolvemos cada segundo valor hasta el índice cuatro.
Utilizamos los símbolos de suma, el resultado es una nueva cadena que es una combinación de ambas.
Podemos replicar valores de una cadena, simplemente multiplicamos la cadena por el número de veces
que queremos replicarla, en este caso tres.
El resultado es una nueva cadena, que está formada por tres copias de la cadena original, esto significa
que no puedes cambiar el valor de la cadena, pero puedes crear una cadena nueva, por ejemplo, puede
crear una nueva cadena estableciéndose en la variable original y concatenando con una nueva cadena.
El resultado es una nueva cadena que cambia de Michael Jackson a Michael Jackson es el mejor.
Las cadenas son inmutables, las barras invertidas representan el comienzo de secuencias de escape.
Las secuencias de escape representan cadenas que pueden ser difíciles de introducir, por ejemplo, la
barra invertida «\n» representa una nueva línea, la salida viene dada por una nueva línea después de
encontrar la barra invertida «\n».
La salida está dada por un tabulador donde se encuentra la barra invertida «t».
Si desea colocar una barra invertida en su cadena, utilice una barra invertida doble.
para poder imprimir de forma literal lo que está entre doble comillas.
Este método upper convierte los caracteres minúsculos en mayúsculos, en este ejemplo,
establecemos la variable A con el siguiente valor, aplicamos el método «Upper», y lo establecemos igual a
B. El valor para B es similar a A, pero todos los caracteres son mayúsculas.
El método replace sustituye un segmento de la cadena, es decir, una subcadena, por una nueva cadena.
Introducimos la parte de la cadena que queremos cambiar. El segundo argumento es aquello por lo que
queremos cambiar el segmento. El resultado es una nueva cadena con un segmento cambiado.
Esto mostrará:
● str.format()
Esta es otra forma de formatear cadenas en Python. Utiliza llaves {} como marcadores de posición para
variables que se pasan como argumentos en el método format(), por ejemplo
Esto mostrará:
● Operador %
Esta es una de las formas más antiguas de formatear cadenas en Python, utiliza el operador % para
reemplazar variables en la cadena, por ejemplo
Esto mostrará:
Cada uno de estos métodos tiene sus propias ventajas y casos de uso, sin embargo, las cadenas f se
consideran generalmente la forma más moderna y preferida de formatear cadenas en Python debido
a su legibilidad y rendimiento.
● Capacidades adicionales
Las cadenas f también son capaces de evaluar expresiones dentro de las llaves, lo que puede ser muy
útil, por ejemplo
Esto mostrará:
Cadena regular:
En la variable de cadena regular “regular_string”, las barras invertidas (\n) se interpretan como
secuencias de escape, por lo tanto, \n representa un carácter de nueva línea, lo que daría lugar a una
representación incorrecta de la ruta del archivo.
Cadena sin procesar:
Sin embargo, en la cadena sin procesar raw_string, las barras invertidas se tratan como caracteres
literales. Esto significa que \n no se interpreta como un carácter de nueva línea, sino como dos
caracteres separados, '' y 'n', en consecuencia, la ruta del archivo se representa exactamente como
aparece.
Listas y Tuplas
#Listas y Tuplas
Se denominan tipos de datos compuestos y son uno de los tipos clave de estructuras de datos en
Python, Tuplas. Las tuplas son una secuencia ordenada, aquí hay una clasificación de tuplas.
Las tuplas se expresan como elementos separados por comas dentro de paréntesis, estos son valores
dentro de los paréntesis.
Todos ellos pueden estar contenidos en una tupla, pero el tipo de la variable es tupla.
Se puede acceder a cada elemento de una tupla mediante un índice, la siguiente tabla representa la
relación entre el índice y los elementos de la tupla.
Se puede acceder al primer elemento mediante el
nombre de la tupla seguido de un corchete con el
número de índice, en este caso cero, podemos acceder
al segundo elemento de la siguiente manera, también
podemos acceder al último elemento. En Python,
podemos utilizar el índice negativo, la relación es la
siguiente, los valores correspondientes se muestran
aquí.
Por ejemplo, si queremos los tres primeros elementos utilizamos el siguiente comando, el último índice es
uno mayor que el índice deseado.
Las listas son también una estructura de datos popular en Python y son también una secuencia
ordenada. Una lista se representa con corchetes. En muchos
aspectos, las listas son como las tuplas, una diferencia
clave es que son mutables.
Al igual que las tuplas, se puede acceder a cada elemento de una lista mediante un índice utilizando el
nombre de la lista seguido de un corchete con el número de índice positivo o negativo, las convenciones de
índices para listas y tuplas son idénticas.
También podemos realizar cortes, concatenar o combinar listas sumándose en listas de la misma
forma que con tuplas.
Podemos convertir una cadena en una lista utilizando split, por ejemplo, el
método split convierte cada grupo de caracteres separados por un espacio en
un elemento de una lista.
El método `count()` se utiliza para contar el número de ocurrencias de un elemento específico en una lista
en Python.
Una lista es un tipo de datos incorporado que representa una colección ordenada y mutable de elementos.
Las listas se encierran entre corchetes [] y los elementos se separan por comas.
La sentencia `del` se utiliza para eliminar un elemento de una lista. La sentencia `del` elimina el elemento
en el índice especificado.
El método `extend()` se utiliza para añadir múltiples elementos a una lista. Toma un iterable (como otra
lista, tupla o cadena) y añade cada elemento del iterable a la lista original.
La indexación en una lista permite acceder a elementos individuales por su posición. En Python, la
indexación empieza en 0 para el primer elemento y llega hasta `length_of_list - 1`.
El método `pop()` es otra forma de eliminar un elemento de una lista en Python. Elimina y devuelve el
elemento en el índice especificado. Si no proporcionas un índice al método `pop()`, eliminará y devolverá el
último elemento de la lista por defecto.
El método `reverse()` se utiliza para invertir el orden de los elementos de una lista.
Diccionario
Puede acceder a los valores de un diccionario utilizando sus `claves` correspondientes.
El método `clear()` vacía el diccionario, eliminando todos los pares clave-valor que contiene. Tras esta
operación, el diccionario sigue siendo accesible y puede seguir utilizándose.
copy() Crea una copia superficial del diccionario. El nuevo diccionario contiene los mismos pares
clave-valor que el original, pero siguen siendo objetos distintos en memoria.
Creación de un diccionario, un diccionario es un tipo de datos incorporado que representa una colección
de pares clave-valor. Los diccionarios se encierran entre llaves `{}`.
del elimina del diccionario el par clave-valor especificado. Genera un error `KeyError` si la clave no existe.
items() recupera todos los pares clave-valor como tuplas y los convierte en una lista de tuplas. Cada tupla
consta de una clave y su valor correspondiente.
Puede comprobar la existencia de una clave en un diccionario utilizando la palabra clave `in`.
keys() recupera todas las claves del diccionario y las convierte en una lista. Útil para iterar o procesar claves
utilizando métodos de lista.
values() Extrae todos los valores del diccionario y los convierte en una lista. Esta lista puede utilizarse para
su posterior procesamiento o análisis.
Establece
Se pueden añadir elementos a un conjunto utilizando el método `add()`. Los duplicados se eliminan
automáticamente, ya que los conjuntos sólo almacenan valores únicos.
El método `clear()` elimina todos los elementos del conjunto, dando como resultado un conjunto vacío.
Actualiza el conjunto en su lugar.
El método `copy()` crea una copia superficial del conjunto. Cualquier modificación en la copia no afectará al
conjunto original.
Un conjunto es una colección desordenada de elementos únicos. Los conjuntos se encierran entre
llaves `{}`. Son útiles para almacenar valores distintos y realizar operaciones con conjuntos.
Utiliza el método `discard()` para eliminar un elemento específico del conjunto. Ignora si el elemento no se
encuentra.
El método `issubset()` comprueba si el conjunto actual es un subconjunto de otro conjunto. Devuelve True
si todos los elementos del conjunto actual están presentes en el otro conjunto, en caso contrario False.
El método `pop()` elimina y devuelve un elemento arbitrario del conjunto. Lanza un `KeyError` si el conjunto
está vacío. Utiliza este método para eliminar elementos cuando el orden no importa.
Utiliza el método `remove()` para eliminar un elemento específico del conjunto. Lanza un `KeyError` si no
se encuentra el elemento.
El método `update()` añade elementos de otro iterable al conjunto. Mantiene la unicidad de los elementos.
Realiza varias operaciones con conjuntos: `unión`, `intersección`, `diferencia`, `diferencia asimétrica`.
Diccionario
#Diccionario
Los diccionarios son un tipo de colección en Python, un diccionario tiene claves y valores.
La clave es análoga al índice, son como direcciones, pero no tienen que ser enteros, suelen ser
caracteres. Los valores son similares a los elementos de una lista y contienen información.
El título del álbum es la clave, y el valor son los datos publicados. Podemos utilizar el amarillo para
resaltar las claves y dejar los valores en blanco.
Es útil utilizar la tabla para visualizar un diccionario en el que la primera columna representa las
claves y la segunda los valores.
Esto añadirá el valor 2007 con una nueva clave llamada «Graduación».
Para ver todas las claves del diccionario, podemos utilizar el método keys para obtener las claves.
Conjuntos
#Establecer
Para definir un conjunto, se utilizan llaves {}, los elementos se colocan dentro de las llaves.
Se observa que hay elementos duplicados, cuando se cree el conjunto, no habrá elementos
duplicados.
Puede convertir una lista en un conjunto utilizando la función conjunto, lo que se denomina conversión
de tipos, sólo tiene que utilizar la lista como entrada de la función set, el resultado será una lista
convertida en un conjunto. Veamos un ejemplo.
● Empezamos con una lista.
● Introducimos la lista en la función conjunto.
● La función conjunto devuelve un conjunto.
● Observa que no hay elementos duplicados.
Supongamos que queremos eliminar NSYNC del conjunto A, podemos eliminar un elemento de un
conjunto utilizando el método remove, simplemente ponemos el nombre del conjunto seguido de un punto,
y a continuación el método remove (A.remove(“Lo que queremos eliminar”)). El argumento es el
elemento del conjunto que queremos eliminar, en este caso, NSYNC, después de aplicar el método
remove al conjunto, el conjunto A no contiene el elemento NSYNC, puedes utilizar este método para
cualquier elemento del conjunto.
Estos son tipos de operaciones matemáticas con conjuntos, hay otras operaciones que podemos hacer,
ejemplo:
● Definamos el conjunto “álbum” conjunto uno, podemos representarlo mediante un círculo rojo o un
diagrama de Venn.
● Podemos definir el conjunto “álbum” conjunto dos, podemos representarlo utilizando un círculo azul
o un diagrama de Venn.
● La intersección de dos conjuntos es un nuevo conjunto que contiene elementos que están en
ambos conjuntos, es útil utilizar diagramas de Venn.
● Los dos círculos que representan los conjuntos se combinan, el solapamiento, representa el
nuevo conjunto, como el solapamiento está formado por el círculo rojo y el círculo azul, definimos la
intersección en términos de Y (&).
● En Python, utilizamos un ampersand (&) para encontrar la intersección de los dos conjuntos.
● Si superponemos los valores del conjunto colocando los elementos comunes en la zona de
superposición, vemos la correspondencia, tras aplicar la operación de intersección, desaparecen
todos los elementos que no están en ambos conjuntos, en Python, simplemente colocamos el
ampersand (&) entre los dos conjuntos. El resultado es un nuevo conjunto “álbum”: conjunto tres que
contiene todos los elementos tanto del conjunto “álbum” uno como del dos.
● La unión de dos conjuntos es el nuevo conjunto de elementos que contiene todos los elementos
de ambos conjuntos, podemos encontrar la unión de los conjuntos álbum conjunto uno y dos de la
siguiente manera.
El resultado es un nuevo conjunto que tiene todos los elementos del conjunto “álbum” uno y
dos.
Un diccionario es un tipo de datos incorporado que representa una colección de pares clave-valor.
Los diccionarios se encierran entre llaves {}.
Inserta un nuevo par clave-valor en el diccionario, si la clave ya existe, se actualizará el valor; en caso
contrario, se creará una nueva entrada.
Elimina del diccionario el par clave-valor especificado, genera un KeyError si la clave no existe.
El método clear() vacía el diccionario, eliminando todos los pares clave-valor que contiene, tras esta
operación, el diccionario sigue siendo accesible y puede seguir utilizándose.
Puede comprobar la existencia de una clave en un diccionario utilizando la palabra clave in
Crea una copia superficial del diccionario. El nuevo diccionario contiene los mismos pares clave-valor
que el original, pero siguen siendo objetos distintos en memoria.
Recupera todas las claves del diccionario y las convierte en una lista, útil para iterar o procesar claves
usando métodos de lista.
Extrae todos los valores del diccionario y los convierte en una lista, esta lista puede utilizarse para su
posterior procesamiento o análisis.
Recupera todos los pares clave-valor como tuplas y los convierte en una lista de tuplas, cada tupla
consta de una clave y su valor correspondiente.
Set - Conjuntos
Se pueden añadir elementos a un conjunto utilizando el método `add()`, los duplicados se eliminan
automáticamente, ya que los conjuntos sólo almacenan valores únicos.
El método `clear()` elimina todos los elementos del conjunto, dando como resultado un conjunto vacío.
Actualiza el conjunto en su lugar.
El método `copy()` crea una copia superficial del conjunto, cualquier modificación en la copia no afectará
al conjunto original.
Un conjunto es una colección desordenada de elementos únicos. Los conjuntos se encierran entre
llaves `{}`. Son útiles para almacenar valores distintos y realizar operaciones con conjuntos.
Utilice el método `discard()` para eliminar un elemento específico del conjunto. Ignora si el elemento
no se encuentra.
Operaciones con conjuntos Realiza varias operaciones con conjuntos: `unión`, `intersección`,
`diferencia`, `diferencia asimétrica`.
El método `issuperset()` comprueba si el conjunto actual es un superconjunto de otro conjunto.
Devuelve True si todos los elementos del otro conjunto están presentes en el conjunto actual, en caso
contrario False.
El método `pop()` elimina y devuelve un elemento arbitrario del conjunto. Lanza un `KeyError` si el
conjunto está vacío. Utiliza este método para eliminar elementos cuando el orden no importa.
Utiliza el método `remove()` para eliminar un elemento específico del conjunto. Lanza un `KeyError` si
no se encuentra el elemento.
El método `update()` añade elementos de otro iterable al conjunto. Mantiene la unicidad de los
elementos.