Python para todos (3): ScyPy, NumPy, Pandas …¿Qué librerías necesitamos?Paloma Recuero de los Santos 3 abril, 2018 Damos un paso más en nuestro aprendizaje de Python aprendiendo lo que son los módulos, y, en particular las librerías. Veremos para qué sirven algunas de ellas y aprenderemos a importarlas y utilizarlas. ¿Qué son los módulos? Los módulos son la forma que tiene Python de almacenar “definiciones”, es decir, instrucciones o variables, en archivos de extensión .py. La ventaja principal de separar un programa en módulos es, que podremos reutilizarlos en otros programas o módulos, sin tener que preocuparnos por el nombre de las variables globales. Para ello, como veremos más adelante, será necesario importar los módulos que se quieran utilizar en cada caso. Python ofrece una colección de módulos estándar que podemos usar como base para un nuevo programa o como ejemplos para empezar a aprender. Los módulos se organizan en paquetes. Son carpetas que contienen otros módulos , y un archivo de inicio llamado __init__.py. Los paquetes permiten estructurar los espacios de nombres de Python usando lo que se conoce como “nombres de módulos con puntos”. Lo entenderemos mucho mejor con un ejemplo. El nombre de módulo A.B designa un submódulo llamado B en un paquete llamado A. Esta nomenclatura evita que los autores de paquetes de muchos módulos, como NumPy o la Biblioteca de Imágenes de Python (Python Imaging Library, o PIL), tengan que preocuparse de los respectivos nombres de módulos. └── paquete ├── __init__.py ├── modulo1.py ├── modulo2.py └── modulo3.py Para importar un módulo, se utiliza la instrucción import, seguida del nombre del paquete (si aplica) más el nombre del módulo (sin el .py) que se desee importar. Si las rutas (lo que se conoce como “namespace”) son largas, se pueden generar alias por medio del modificado “as”: Los módulos deben importarse al principio del programa, en orden alfabético. Primero los propios de Python, luego los de terceros y , finalmente, los de la aplicación. La librería estándar de Python Python viene con una biblioteca de módulos estándar, sobre la podemos encontrar toda a información en The Python Standard Library. (Para documentarnos sobre la sintaxix y la semántica también nos vendrá bien tener a mano The Python Language Reference. La librería estándar es muy amplia y ofrece una gran variedad de módulos que realizan funciones de todo tipo, desde módulos escritos en C que ofrecen acceso a funcionalidades del sistema como el acceso a ficheros (file I/O). Los instaladores de de Python para plataformas Windows, normalmente incluyen la librería estándar completa, incluso algunos componentes adicionales. Sin embargo, en las instalaciones Python mediante paquetes harán falta instaladores específicos. Un paseo por la Librería estándar La biblioteca estándar ofrece una gran variedad de módulos que realizan distinto tipo de funciones. Por ejemplo, el módulo OS ofrece las típicas funciones que permiten interactuar con el sistema operativo como decirnos en qué directorio estamos, cambiar de directorio, las funciones de ayuda dir(os) o help (os), etc, el módulo math que ofrece funciones trigonométricas, logarítmicas, estadísticas etc. También hay módulos para acceder a internet y procesar sus protocolos con urllib.request, paradescargar datos de una URLs y smtplib, para enviar correos; o módulos como datetime, que permiten manejar fechas y tiempos, módulos que permiten comprimir datos, o módulos de medida de rendimientos. No incluimos ejemplos para no alargarnos demasiado, pero si de verdad estáis interesados en aprender, os recomendamos ir probando uno a uno estos módulos (desde la propia Shell de Python, o desde Jupiter) con este Pequeño Paseo por la Biblioteca Estándar que podéis encontrar en la documentación oficial de Python. Los entornos virtuales Sin embargo, las aplicaciones de Python muchas veces usan paquetes y módulos que no forman parte de la biblioteca estándar, de hecho Python está diseñado para facilitar esa interoperabilidad. El problema con el que nos encontramos, habitual en los entornos de código abierto, es que muchas veces las aplicaciones necesitan una versión específica de una librería, debido a que dicha aplicación requiere que un bug particular haya sido solucionado o bien la aplicación ha sido escrita usando una versión obsoleta de la interface de la librería. Esto significa que tal vez no sea posible que nuestra instalación de Python cumpla los requerimientos de todas las aplicaciones. Si la aplicación A necesita la versión 1.0 de un módulo particular y la aplicación B necesita la versión 2.0, entonces los requerimientos entran en conflicto e instalar la versión 1.0 o 2.0 dejará una de las aplicaciones sin funcionar. La solución a este problema es crear un entorno virtual, un directorio que contiene una instalación de Python de una versión en particular, además de unos cuantos paquetes adicionales. De esta forma, diferentes aplicaciones pueden usar entornos virtuales diferentes. Para resolver el ejemplo de requerimientos en conflicto citado anteriormente, la aplicación A puede tener su propio entorno virtual con la versión 1.0 instalada mientras que la aplicación B tiene otro entorno virtual con la versión 2.0. Librerías no estándar Dado que el objetivo de nuestro ejemplo es realizar un experimento de aplicación de machine Learning con Python a un determinado dataset, vamos a necesitar algo más que las librerías de la biblioteca estándar ya que, aunque hemos visto que ofrece algunas funciones matemáticas se nos quedan un poco cortas Por ejemplo, también necesitaremos módulos que nos permitan trabajar con visualizaciones de los datos. Vamos a conocer cuáles son las más habituales en data science : NumPy : Acrónimo de Numerical Python. Su características más potente es que puede trabajar con matrices (array) de n dimensiones. También ofrece funciones básicas de algebra lineal, transformada de Fourier, capacidades avanzadas con números aleatorios, y herramientas de integración con otros lenguajes de bajo nivel como Fortran, C y C++SciPy: Acrónimo de Scientific Python. SciPy está construida sobre la librería NumPy. Es una de las más útiles por la gran variedad que tiene de módulos de alto nivel sobre ciencia e ingeniería, como transformada discreta de Fourier, álgebre lineal, y matrices de optimización. s.Matplotlib: es una librería de gráficos, desde histogramas, hasta gráficos de líneas o mapas de calor. También se pueden usar comandos de Latex para agregar expresiones matemáticas a tu gráfica.Pandas: se utiliza para operaciones y manipulaciones de datos estructurados. Es muy habitual usarlo en la fase de depuración y preparación de los datos. Es una librería que se ha añadido recientemente, pero su gran utilidad ha impulsado el uso de Python en la comunidad científica. Scikit Learn para machine learning: Construida sobre NumPy, SciPy y matplotlib, esta librería contiene un gran número de eficientes herramientas para machine learning y modelado estadístico, como por ejemplo, algoritmos de clasificación, regresión, clustering y reducción de dimensionalidad.Statsmodels: para modelado estadístico. Es un módulo de Python que permite a los usuarios explorar datos, hacer estimaciones de modelos estadísticos y realizar test estadísticos. Ofrece una extensa lista de estadísticas descriptivas, test, funciones gráficas etc para diferentes tipos de datos y estimadores.Seaborn: basada en matplotlib, se usa para hacer más atractivos los gráficos e información estadística en Python. Su objetivo es darle una mayor relevancia a las visualizaciones, dentro de las tareas de exploración e interpretación de los datos.Bokeh: permite generar atractivos gráficos interactivos en 3D, y aplicaciones web. Se usa para aplicaciones de rendimiento con datos en streaming.Blaze: extiende las capacidades de Numpy y Pandas a datos distribuidos y en streaming. Se puede usar para acceder a datos de un gran número de fuentes como Bcolz, MongoDB, SQLAlchemy, Apache Spark, PyTables, etc.Scrapy: se usa para rastrear la web. Es un entorno muy útil para obtener determinados patrones de datos. Desde la url de la home de una web, puede «bucear» en las distintas páginas del sitio para recopilar información.SymPy: se usa para cálculo simbólico, desde aritmética, a cálculo, álgebra, matemáticas discretas y física cuántica. También permite formatear los resultados en código LaTeX.Requests for accessing the web: trabaja de foram similar a la librería estándar urllib2, pero es más sencilla de codificar. En el blog tenemos un ejemplo interesante de aplicación de pandas, numpy, matplotlib y scikit-learn aplicado a un dataset que os sonará, porque es un clásico. Se trata del conjunto de datos de clasificación de iris, al que aplicaremos la técnica de Análisis de componentes principales o PCA. En este otro post, tenemos un ejemplo de aplicación de statsmodels en el “predictor de infidelidad” que creamos por San Valentín. Como predictor, como podréis imaginar, no valía gran cosa. Pero fue muy intersante para aprender. En este mismo experimento usamos Matplotlib para crear histogramas, usamos el modelo de regresión logística de scikit-learn , y Seaborn para crear mapas de calor Y ahora, os proponemos un sencillo ejercicio para practicar un poco. Consiste en verificar las versiones de librerías que nos ha instalado Anaconda. En la página web de Anaconda podemos ver este diagrama con los distintos tipos de librerías disponibles (IDEs para ciencia de datos, de analíticas y cálculos científicos, de visualización o de Machine Learning. Como veréis, aparecen dos librerías de las que no hemos hablado, Dask y Numba. Así que, también podéis investigar para qué sirven, y comprobar también qué versiones son las que nos ha instalado Anaconda. Figura 2: Esquema del entorno Anaconda Para ello, no tenéis más que escribir en vuestro Jupyter notebook, o copiar y pegar, los siguentes comandos, (con alguna pequeña modificación para las librerías que no aparecen). Con este post ya tenemos todo preparado para empezar lo que es el experimento de Machine Learning en sí. En el próximo, empezaremos con la carga de los datos, y el análisis exploratorio. ¡Ya casi lo tenemos!. Todos los post de este tutorial, aquí: Introducción: Machine Learning con Python para todos los públicos.Python para todos (1): Instalación del entorno Anaconda.Python para todos (2): ¿Qué son los Jupiter Notebook?. Creamos nuestro primer notebook y practicamos algunos comandos fáciles.Python para todos (3): ¿Qué son las librerías?. Preparamos el entorno.Python para todos (4): Empezamos el experimento propiamente. Carga de datos, análisis exploratorio (dimensiones del dataset, estadísticas, visualización etc)Python para todos (5) Final: Creación de los modelos y estimación de su precisión Los post más interesantes de LUCA Data Speaks organizados por series y temáticas Para mantenerte al día con LUCA visita nuestra página web, suscríbete a LUCA Data Speaks o síguenos en Twitter, LinkedIn y YouTube Esta semana en el blog de LUCA: (26 de marzo a 1 de abril)La revolución de los chatbots, un fenómeno que ya está aquí
Olivia Brookhouse ¿Puede la Inteligencia Artificial entender las emociones? Cuando John McCarthy y Marvin Minsky iniciaron la Inteligencia Artificial en 1956, se sorprendieron de cómo una máquina podía resolver rompecabezas increíblemente difíciles en menos tiempo que los humanos. Sin...
Javier Martínez Borreguero Automatización, Conectividad e Inteligencia Aumentada al servicio de una reindustrialización competitiva, disruptiva y sostenible Por segundo año consecutivo vuelvo a participar en el Advanced Factories (AF 2023), la mayor exposición y congreso profesional dedicado a la Industria 4.0 del sur de Europa. Un...
Nacho Palou Medidas para reducir la brecha digital de género sin esperar 32 años El informe Sociedad Digital en España 2023, de Fundación Telefónica, dedica un apartado específico para analizar la brecha de género en el ámbito del talento digital. Destaca que, si bien...
Nacho Palou Raspberry Pi para Edge AI: Inteligencia Artificial en el borde para todos Raspberry Pi es un popular ordenador muy utilizado entre desarrolladores, estudiantes y aficionados a la informática, a la robótica y a ‘cacharrear’. Entre sus virtudes están su bajo coste...
Carlos Lorenzo Ya no eres solo una empresa de productos o servicios, eres una empresa de datos Todas las empresas que operan en la actualidad son en realidad empresas de datos. Y lo son porque día a día almacenan y utilizan una gran cantidad de información:...
Jorge Rubio Álvarez Inteligencia Artificial aplicada a la Ciberseguridad industrial (OT) La Ciberseguridad en los entornos industriales u OT (Operational Technology) es crucial para proteger infraestructuras críticas como la energía, el transporte y la comunicación. Una preocupación cada vez mayor...