Introduccion A Python - (Listas, Pilas y Colas)
Introduccion A Python - (Listas, Pilas y Colas)
CONTENIDOS TEMATICOS
Introducir al estudiante en el lenguaje de programación Python enfocado en las estructuras de datos con el
Objetivo General
objetivo de depurar extraer y visualizar datos para el proceso de toma de decisiones.
1. Introducción
2. Descarga e instalación de Python
3. Fundamentos básicos
3.1. Compilado vs. interpretado
3.2. Origen de Python
4. El lenguaje como tal
4.1. Mi primer programa
4.2. Directivas básicas
5. Operadores
6. Tipos de datos
7. Entrada de datos por teclado
Contenidos Temáticos
8. Listas o arreglos en Python
8.1. Como acceder a los contenidos de la lista
8.2. Agregar elementos a la lista con los métodos append() e insert()
8.3. Eliminar elementos de la lista con los métodos remove(), pop() y del()
9. Pilas en Python
9.1. Las pilas y sus métodos
9.2. Ejemplos sencillos
10. Colas en Python
10.1. Las colas y sus métodos
10.2. Colas usando el método collections.deque
10.3. Ejemplos sencillos
Joyanes Aguilar, L. (2013). Big Data, análisis de grandes volúmenes de datos en organizaciones. México D.F.
Alfaomega.
Viktor Mayer-Schönberg y Kenneth Cukier (2013). Big Data la revolución de los datos masivos. Noema
Recursos educativos en publicaciones.
español Paniagua Esther (2015). Big Data el poder de los datos. Madrid. Fundación innovación Bankinter.
Casas Roma, Jordi (2019). Big data: análisis de datos en entornos masivos. Barcelona: Editorial UOC.
Video: https://www.youtube.com/watch?v=lc5JJTQa4r8 -¿Qué es Python y para que sirve?
Guía de clase (Suministrada por el docente).
Python para ciencia de datos les proporciona todas las herramientas necesarias para llevar a cabo este proceso de manera
efectiva con bibliotecas dedicadas para cada uno de los pasos anteriores. Este lenguaje cuenta con poderosas bibliotecas
estadísticas y numéricas como Pandas, Numpy, Matplotlib, SciPy, scikit-learn, etc. y bibliotecas avanzadas de aprendizaje
profundo como Tensorflow, PyBrain, etc.
Además, Python ha surgido como el idioma predeterminado para la inteligencia artificial y el aprendizaje de máquina. Por
lo tanto, no es sorprendente que este lenguaje versátil sea el lenguaje de programación más utilizado entre los científicos
de datos. Este lenguaje de programación de alto nivel basado en intérpretes no solo es fácil de usar, sino que también
equipa a los científicos de datos para implementar soluciones y, al mismo tiempo, siga los estándares de los algoritmos
requeridos.
Ahora, echemos un vistazo a los pasos involucrados en el proceso de resolución de problemas de ciencia de datos y
paquetes de Python para minería de datos que debería ser una parte indispensable de su caja de herramientas como
científico de datos:
1. Recopilación y limpieza de datos: Con Python, se pueden importar casi todo tipo de datos que estén disponibles
en diferentes formatos, como CSV (valor separado por comas), TSV (valor separado por tabulaciones) o JSON
procedentes de la web. Si quiere importa tablas SQL directamente a su código o necesita indagar en cualquier
sitio web, Python lo ayuda a realizar estas tareas fácilmente con bibliotecas como: PyMySQL y BeautifulSoup. El
primero le permite conectarse fácilmente con una base de datos MySQL para ejecutar consultas y extraer datos,
mientras que el segundo le ayuda a leer datos de tipo XML y HTML. Después de extraer y reemplazar valores,
también necesitaría ocuparse de los conjuntos de datos faltantes durante la fase de limpieza de datos y reemplazar
los no valores en consecuencia.
2. Exploración de datos: Una vez que sus datos están recopilados y limpios, estos deben ser explorados para
identificar sus propiedades y clasificarlos en diferentes tipos, como numéricos, ordinal, nominal, categórica, etc.,
para proporcionarles los tratamientos requeridos. Una vez que los datos se clasifican según su
tipo, NumPy y Pandas estas bibliotecas lo ayudarán a liberar información de los datos al permitirle manipularlos
de manera fácil y eficiente.
3. Modelado de datos: Esta es una fase muy crucial en el proceso de ciencia de datos en la que se esforzaría por
minimizar la dimensionalidad de su conjunto de datos. Python para ciencia de datos cuenta con bibliotecas
avanzadas como SciPy para realizar fácilmente cálculos y cálculos científicos, Scikit-learn para aplicar algoritmos
de aprendizaje automático a sus datos sin ninguna complejidad y Numpy para realizar un análisis de modelado
numérico de sus datos. Una vez finalizado el modelado de datos, necesitaría visualizar e interpretar datos para
obtener información procesable.
4. Visualización e interpretación de datos: Python tiene muchos paquetes de visualización de datos. Matplotlib es
la biblioteca más utilizada entre ellas para generar gráficos y cuadros básicos. En caso de que necesite gráficos
avanzados bellamente diseñados, también puede probar otra biblioteca de Python, Plotly.
Otra biblioteca de Python, IPython lo ayuda con la visualización interactiva de datos y admite el uso de un kit de
herramientas GUI. Si desea insertar sus hallazgos en páginas web interactivas, la función nbconvert puede
ayudarlo a convertir sus cuadernos IPython o Jupyter en fragmentos HTML enriquecidos.
Después de la visualización de datos, la presentación de sus datos es de suma importancia. Y debe hacerse de tal
manera que los hallazgos sean impulsados por las preguntas de su negocio que hizo al comienzo de su proyecto.
Para descargar e instalar el lenguaje de programación Python tenemos varias posibilidades, veamos:
De acuerdo con (Netacad.com, 2021), Hay dos formas diferentes de transformar un programa de un lenguaje de
programación de alto nivel a un lenguaje de máquina:
• COMPILACIÓN - El programa fuente se traduce una vez (sin embargo, esta ley debe repetirse cada vez que se
modifique el código fuente) obteniendo un archivo (por ejemplo, un archivo .exe si el código está diseñado para
ejecutarse en MS Windows) que contiene el código de la máquina; ahora puedes distribuir el archivo en todo el mundo;
el programa que realiza esta traducción se llama compilador o traductor.
• INTERPRETACIÓN - Tú (o cualquier usuario del código) puedes traducir el programa fuente cada vez que se ejecute;
el programa que realiza este tipo de transformación se denomina intérprete, ya que interpreta el código cada vez que
está destinado a ejecutarse; también significa que no puede distribuir el código fuente tal como está, porque el usuario
final también necesita que el intérprete lo ejecute.
• Python es un lenguaje interpretado. Esto significa que hereda todas las ventajas y desventajas descritas. Por supuesto,
agrega algunas de sus características únicas a ambos conjuntos.
• Si deseas programar en Python, necesitarás el intérprete de Python. No podrás ejecutar tu código sin él.
Afortunadamente, Python es gratis. Esta es una de sus ventajas más importantes.
Y aunque puede que conozcas a la pitón como una gran serpiente, el nombre del lenguaje de programación Python
proviene de una vieja serie de comedia de la BBC llamada Monty Python's Flying Circus. Dado que Monty Python es
considerado uno de los dos nutrientes fundamentales para un programador (el otro es la pizza), el creador de Python
nombró el lenguaje en honor del programa de televisión.
Una de las características sorprendentes de Python es el hecho de que en realidad es el trabajo de una persona. Por lo
general, los grandes lenguajes de programación son desarrollados y publicados por grandes compañías que emplean a
muchos profesionales, y debido a las normas de derechos de autor, es muy difícil nombrar a cualquiera de las personas
involucradas en el proyecto. Python es una excepción.
No hay muchos idiomas cuyos autores son conocidos por su nombre. Python fue creado por Guido van Rossum, nacido
en 1956 en Haarlem, Países Bajos. Por supuesto, Guido van Rossum no desarrolló y evolucionó todos los componentes de
Python.
La velocidad con la que Python se ha extendido por todo el mundo es el resultado del trabajo continuo de miles de (muy
a menudo anónimos) programadores, evaluadores, usuarios (muchos de ellos no son especialistas en TI) y entusiastas, pero
hay que decir que la primera idea (la semilla de la que brotó Python) llegó a una cabeza: la de Guido.
Muchas herramientas de desarrollo se implementan en Python. Cada vez se escriben más aplicaciones de uso diario en
Python. Muchos científicos han abandonado las costosas herramientas patentadas y se han cambiado a Python.
Muchos evaluadores de proyectos de TI han comenzado a usar Python para llevar a cabo procedimientos de prueba
repetibles. La lista es larga.
Paso 1. Vamos a crear un nuevo espacio de trabajo o mas bien un nuevo Notebook. Nos dirigimos a Archivo >>
Cuaderno nuevo en drive, visualizamos lo sgte:
Nos posicionamos sobre Untitled y le damos un nombre al notebook, por ej. MiprimerNotebook, notemos la extensión del
documento .ipynb es decir extensión de un cuaderno de trabajo.
Paso 2. En el Notebook contamos con la posibilidad de ingresar código en Python, pero también podemos documentar
nuestros desarrollos, veamos:
Si queremos colocar Texto, solo damos clic en el +, tengamos en cuenta los comentarios en Python:
Paso 3. Vamos a dar nuestros primeros pasos en Python, el famoso programa “Hola Mundo”
Como se puede ver, la cadena está delimitada por comillas - de hecho, las comillas forman la cadena, recortan una parte
del código y le asignan un significado diferente.
La barra invertida (\) tiene un significado muy especial cuando se usa dentro de las cadenas, es llamado el carácter de
escape.
Ejemplo
Ejemplo
• Comentarios
"""
Este es
un comentario
de varias líneas
"""
• Variables: Son datos que cambian o toman otro valor durante la ejecución de un programa.
Operación Resultado
print (2 ** 2 ** 3)
6. Tipos de datos
-2536
a=5
Booleanos Son valores o variables cuyo estado solo puede ser
b=15
verdadero o falso.
op=a>b
print(op)
Millas y kilómetros son unidades de longitud o distancia. desarrolle un sencillo programa en Python que realice las
siguientes conversiones:
• Millas a kilómetros.
• Kilómetros a millas.
Para ingresar datos por teclado se utiliza la función input (), veamos algunos ejemplos:
Ejemplo 1
Ejemplo 2
x=int(input ("Ingrese un valor entero"))
y=int(input ("Ingrese otro valos entero"))
z=x+y
print("la suma de los valores es:",z)
Ejemplo 3
edad = int(input("Dígame su edad: "))
print(f"Su edad son {edad} años")
Ejemplo 4
nombre = input("Dígame su nombre: ")
apellido = input(f"Dígame su apellido, {nombre}: ")
print(f"Me alegro de conocerle, {nombre} {apellido}.")
Hasta ahora, hemos aprendido como declarar variables que pueden almacenar exactamente un valor dado a la vez. Tales
variables a veces se denominan escalares por analogía con las matemáticas. Todas las variables que has usado hasta ahora
son realmente escalares.
Piensa en lo conveniente que fuese declarar una variable que podría almacenar más de un valor. Por ejemplo, cien, o mil o
incluso diez mil. Todavía sería una y la misma variable, pero muy amplia y espaciosa. ¿Suena atractivo? Quizás, pero ¿cómo
manejarías un contenedor así lleno de valores diferentes? ¿Cómo elegirías solo el que necesitas?
Vamos a crear una variable llamada números; se le asigna no solo un número, sino que se llena con una lista que consta
de cinco valores (nota: la lista comienza con un corchete abierto y termina con un corchete cerrado; el espacio entre los
corchetes es llenado con cinco números separados por comas).
números = [10, 5, 7, 2, 1]
Los elementos dentro de una lista pueden tener diferentes tipos. Algunos de ellos pueden ser enteros, otros son flotantes
y otros pueden ser listas.
Python ha adoptado una convención que indica que los elementos de una lista están siempre numerados desde cero. Esto
significa que el elemento almacenado al principio de la lista tendrá el número cero. Como hay cinco elementos en nuestra
lista, al último de ellos se le asigna el número cuatro.
números = [10, 5, 7, 2, 1]
print("Contenido de la lista:", números) # Imprimiendo contenido de la lista original.
Se puede acceder a cada uno de los elementos de la lista por separado. Por ejemplo, se puede imprimir:
print(numeros[0]) # Accediendo al primer elemento de la lista.
La función len()
La longitud de una lista puede variar durante la ejecución. Se pueden agregar nuevos elementos a la lista, mientras que
otros pueden eliminarse de ella. Esto significa que la lista es una entidad muy dinámica.
Si deseas verificar la longitud actual de la lista, puedes usar una función llamada len() (su nombre proviene de length -
longitud).
La función toma el nombre de la lista como un argumento y devuelve el número de elementos almacenados
actualmente dentro de la lista (en otras palabras - la longitud de la lista).
Veamos con nuestro ejemplo anterior:
Ej1.
# Pedir al usuario que ingrese el número de elementos, en este caso la lista está limitada a solo números enteros
n = int(input("Ingrese el número de elementos en la lista: "))
for i in range(n):
while True:
try:
n = int(input("Ingrese el número de elementos en la lista: "))
if n > 0:
break
else:
print("Por favor, ingrese un número entero positivo.")
except ValueError:
Python cuenta con 2 métodos para adicionar elementos a las listas veamos:
El método append ()
Un nuevo elemento puede ser añadido al final de la lista existente:
Sintaxis
list.append(value)
Dicha operación se realiza mediante un método llamado append(). Toma el valor de su argumento y lo coloca al final de
la lista que posee el método.
Ej.1
nombres.append("Maria")
print("La nueva lista seria:",nombres)
El método insert ( )
El método insert() es más funcional, ya que puede agregar un nuevo elemento en cualquier lugar de la lista, no solo al final.
• El primero muestra la ubicación requerida del elemento a insertar; nota: todos los elementos existentes que
ocupan ubicaciones a la derecha del nuevo elemento (incluido el que está en la posición indicada) se desplazan
a la derecha, para hacer espacio para el nuevo elemento;
list.insert(location, value)
Ej2.
#Vamos a agregar un nuevo elemento a la lista con el metodo insert: nombredelalista.insert(location, value)
nombres.insert(2,"Juan")
8.3. Eliminar elementos de la lista con los métodos remove (), pop () y del ()
Python cuenta con varios métodos para eliminar elementos en las listas veamos:
El método remove ()
Elimina el primer elemento que coincida con el valor que se pasa como argumento.
Sintaxis
list.remove(value)
Ej.1
#Veamos com eliminar elementos a la lista
print(nombres)
El método pop ( )
El método pop () es más funcional, ya que puede eliminar un nuevo elemento en cualquier lugar de la lista, pero trabaja
con su posición mas no su contenido.
Sintaxis
itemb=nombredelalista.pop(posicion)
Ej2.
#Vamos a eliminar elemento de la lista con el metodo pop ()
Itemb=nombres.pop(“Juan)
El método del ()
Es útil para eliminar elementos o trozos de una lista en Python.
Sintaxis
del nombredelalista=[ ]
Ej3.
nombres=['William', 'Jose', 'Pedro', 'Juan', 'Mateo', 'Maria']
print(nombres)
Una parte interesante de este método del()es que proporciona la funcionalidad de eliminar una sección de elementos de
una lista. La sintaxis para eliminar varios elementos se muestra a continuación donde:
Sintaxis
del list[start:end]
print(nombres)
del nombres[2:4]
Nota: Puedo borrar todos los elementos de la lista con la siguiente instrucción:
del nombres[:]
libro = {
'isbn': isbn,
'titulo': titulo,
'autor': autor,
'año': año,
}
biblioteca.append(libro)
print(f"Libro '{titulo}' agregado a la biblioteca.")
# Menú principal
def menu():
while True:
print("\nMenú de la Biblioteca")
print("1. Agregar libro")
print("2. Eliminar libro")
print("3. Mostrar biblioteca")
print("4. Salir")
opcion = input("Seleccione una opción: ")
if opcion == '1':
agregar_libro()
elif opcion == '2':
eliminar_libro()
elif opcion == '3':
print("Biblioteca:")
for libro in biblioteca:
print(libro)
elif opcion == '4':
print("Saliendo del programa...")
break
else:
print("Opción no válida. Intente de nuevo.")
# Ejecutar el menú
menu()
9. Pilas en Python
Recordemos que el concepto de pila es que esta es una estructura de datos de entradas ordenadas tales que solo se
introduce y elimina por un extremo, llamado cima o tope. Por lo tanto, en una estructura tipo pila solo se permite agregar
nodos a la pila y eliminarlos de esta sólo desde su parte superior.
• Desapilar (pop): Realizar el retiro de un elemento de la pila. Se Toma primero el que se encuentra en el tope de la
pila.
• Vaciar: Le permite conocer si la pila esta desocupada o Contiene elementos, se puede indicar cuantos elementos
contiene la pila.
Ej1.
#Declaro una pila con 4 elementos iniciales
pila = ["Carlos","Sebastian","Angelica","Camilo"]
pila.append("Alejandra")
pila.append("Tatiana")
pila.append("Maria")
ultimo_elemento = pila[-1]
# Vaciar la pila
pila.__init__()
print("La pila ya vacia:",pila)
# Menú principal
def menu():
while True:
print("\nMenú de Gestión de Citas")
print("1. Agregar cita")
print("2. Eliminar última cita")
print("3. Mostrar citas")
print("4. Salir")
opcion = input("Seleccione una opción: ")
if opcion == '1':
agregar_cita()
elif opcion == '2':
eliminar_cita()
elif opcion == '3':
print("Citas:")
for cita in citas:
print(cita)
elif opcion == '4':
print("Saliendo del programa...")
break
else:
print("Opción no válida. Intente de nuevo.")
# Ejecutar el menú
menu()
Una cola es una estructura de datos que almacena elementos en una lista y permite acceder a los datos por uno de los dos
extremos de la lista.
Un elemento se inserta en la cola (parte final) de la lista y se suprime o elimina por la frente (parte inicial, cabeza) de la lista.
Los elementos se eliminan (se quitan) de la cola en el mismo orden en que se almacenan y, por consiguiente, una cola es
una estructura de tipo FIFO (first-in-first-out, primero en entrar, Primero en salir o bien primero en llegar/primero en ser
servido).
Las colas en Python se pueden implementar de forma más eficiente utilizando la clase collections.deque, que está diseñada
para realizar adiciones y eliminaciones rápidas desde ambos extremos.
Metodos
* Retirar(popleft): Realizar el retiro de un elemento de la cola, pero los extrae por la parte izquierda, que sería la cabeza de
la cola.
cola = []
# Agregar elementos a la cola
cola.append('a')
cola.append('b')
cola.append('c')
print(cola.pop(0))
q = deque()
q.append('a')
q.append('b')
q.append('c')
print("Cola inicial", q)
print(q.popleft())
print(q.popleft())
def __init__(self):
self.items = []
# Verifica si la cola está vacía.
def isEmptyCola(self):
return self.items == []
self.items.insert(0,item)
def removeItem(self):
return self.items.pop()
# Devuelve el número de ítems en la cola.
def lenghtCola(self):
return len(self.items)
colaobj = Cola()
colaobj.addItem('Camisa')
colaobj.addItem('Pantalón')
colaobj.addItem('Chaqueta')
colaobj.addItem('Zapatos')
colaobj.removeItem()
turnos = deque()
def agregar_turno():
cliente = turnos.get()
print(f"Atendiendo al cliente: {cliente}")
else:
def mostrar_turnos_pendientes():
# Menú interactivo
def menu():
while True:
print("4. Salir")
if opcion == "1":
agregar_turno()
atender_turno()
break
else:
print("Opción inválida, por favor intente nuevamente.")
# Ejecutar el menú
menu()