Saltar al contenido

Python para los analistas de datos

Las aplicaciones de respetable complejidad deben organizarse y no volcarse en un solo archivo. En Python, la idea de un módulo ayuda a evitar esto. Un módulo es simplemente un contenedor para un trozo de código que puede ser reutilizado en una aplicación. La Biblioteca Estándar de Python contiene muchos módulos que son útiles en las tareas cotidianas. Consideremos el módulo aleatorio.

La generación de datos aleatorios es una necesidad común. Un ejemplo obvio es una baraja de cartas. Almacenando los palos y rangos en listas, podríamos usar fácilmente el módulo aleatorio para «sacar» una carta de una baraja «barajada».

Python para los analistas de datos
Python para los analistas de datos
123 trajes =[$0027corazones$0027,$0027tréboles$0027,$0027picas$0027,$0027diamantes$0027]rangos =[str(r)for r inrange(2,11)]rangos.extend(list($0027AKQJ$0027))

pitón

La función de rango generará números enteros desde el índice de inicio hasta el índice de parada, así que de 2 a 10 en este ejemplo. Y el inicializador de str arrojará los números enteros a las cuerdas. Finalmente, el inicializador de lista dividirá la cadena en una lista.

Ahora importa el módulo aleatorio y usa la función de elección para seleccionar un traje y un rango.

1234importar traje aleatorio = aleatorio.choice(trajes)rango = tarjeta de elección aleatoria =f$0027{rank} de {traje}$0027

pitón

Fíjese que la llamada a la elección lleva el prefijo del nombre del módulo. Este es un modismo común, pero la función de elección también podría ser importada explícitamente.

1234de la importación aleatoria de trajes = rango = tarjeta de elección de {traje}$0027

pitón

Ambos trabajan de la misma manera. ¿Cuál debería usar? Eso depende. Para evitar conflictos de nombres, es mejor importar el módulo y referirse a los miembros individuales. Aunque es legal, se considera un mal estilo hacer lo siguiente:

1de la importación aleatoria*

pitón

Esto importará todo desde el módulo aleatorio. Aunque esto podría parecer conveniente, a medida que empiece a importar más módulos, podría plantear la posibilidad de nombrar conflictos.

Otro truco común de importación es el uso de alias.

1234importar aleatorio como rndsuit = rnd.choice(trajes)rank = rnd.choice(rangos)card =f$0027{rank} de {traje}$0027

pitón

Esto es común en el análisis de datos con Python. A menudo verás estos dos módulos con alias.

12import numpy as npimport pandas as pd

pitón

Y en un caso en el que se trabaja con submódulos, puede eliminar un montón de tecleos.

1import matplotlib.pyplot como plt

pitón

Crear un módulo es simple. Si creas un archivo de código, habrás creado un módulo. Supongamos que estamos construyendo un juego de cartas. Traficar con cartas será una tarea común, así que tiene sentido reutilizar el código anterior. Pongámoslo en un archivo llamado cards.py. Los archivos Python suelen tener una extensión $0027.py$0027.

1234567891011importar traje aleatorio = tarjeta random.choice(trajes)rank = tarjeta random.choice(rangos)=f$0027{rank} de {traje}$0027defdraw_card(): traje = rnd.choice(trajes) rank = tarjeta rnd.choice(rangos) =f$0027{rank} de {traje}$0027return card

pitón

Colocando este código en un archivo llamado cards.py, hemos creado un módulo. Puede ser usado en el archivo principal, quizás app.py.

12345678desde la importación de cartas draw_carddefdraw_hand(num_cards): mano =[draw_card()for _ inrange(num_cards)]return handif __name__ ==$0027__main__$0027: poker_hand = draw_hand(5)

pitón

El condicional en la parte inferior del archivo es el punto de entrada. Para obtener el nombre del módulo actual, usa la variable especial __name__. Como un aparte, se pronuncia «dunder nombre dunder», o simplemente «nombre dunder», usando «dunder» como un atajo para el «doble subrayado». El módulo llamado __main__ es el primer módulo invocado. Para esta aplicación, sería app.py. Utilice el intérprete de Python para iniciar la aplicación.

1$ python app.py

Cabe señalar que este código no impedirá el dibujo de tarjetas duplicadas. Pero dejaré eso como un ejercicio para el lector.