From e81137474f102d71fe0b25307bcf88810c1b2d43 Mon Sep 17 00:00:00 2001 From: Ekaitz Zarraga Date: Wed, 4 Mar 2020 13:41:02 +0100 Subject: New arrangement for multilanguage and metadata support --- es/09_extralib.md | 162 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 162 insertions(+) create mode 100644 es/09_extralib.md (limited to 'es/09_extralib.md') diff --git a/es/09_extralib.md b/es/09_extralib.md new file mode 100644 index 0000000..65ed418 --- /dev/null +++ b/es/09_extralib.md @@ -0,0 +1,162 @@ +# Librerías útiles + +Ahora que ya sabes cómo instalar librerías y que has visto que muchas +funcionalidades están contenidas en la librería estándar de python es un buen +momento para que visites varios proyectos que aportan recursos muy interesantes +a la hora de resolver problemas. Debido al carácter de uso general de python, +estas librerías aportan facilidades muy diversas. El criterio para escogerlas +parte de la experiencia personal del autor de este documento y añade algunas +librerías y herramientas que pueden ser interesantes debido a su amplio uso en +la industria. + +## Librerías científicas: ecosistema SciPy + +SciPy es un ecosistema de librerías de cálculo que tiene como objetivo +facilitar la tarea de ingenieros, científicos y matemáticos en sus +respectivos trabajos. Puedes considerarlo como un **Matlab** para python +separado por componentes independientes. + +Además de ser el nombre del ecosistema, comparte nombre con una de las +librerías fundamentales de éste. El ecosistema está formado por varias +librerías, entre ellas se encuentran: + +- Numpy: un paquete de computación científica para python. Soporta matrices + multidimensionales, funciones sofisticadas y álgebra lineal, entre otras. + +- SciPy: librería basada en Numpy que aporta rutinas numéricas eficientes para + interpolación, optimización, algebra lineal, estadística y otros. + +- SymPy: una librería de matemática simbólica para python que complementa el + resto de librerías del ecosistema, ya que casi todas están orientadas al + análisis numérico. + +- Matplotlib: librería para representar gráficos y figuras científicas en 2D. + +- Pandas: aporta unas estructuras de datos muy potentes basadas en tablas, su + objetivo es reforzar a python a la hora de tratar datos. El área de esta + librería es el del análisis de datos, pero puede combinarse con otras áreas + de estudio como la econometría (ver el proyecto statsmodels). Esta librería + dispone de un ecosistema muy poderoso a su alrededor debido al auge del + análisis de datos en la industria del software. Muchas librerías comparten la + interfaz de Pandas por lo que tener nociones de su comportamiento abre muchas + puertas en el sector del análisis de datos. Al igual que ocurre en SciPy, Las + estructuras de datos de Pandas también se basan en Numpy. + +- IPython: más que una librería, IPython es una herramienta. Se trata de una + REPL interactiva (su propio nombre viene de *Interactive Python*) que añade + diversas funcionalidades sobre la REPL de python habitual: histórico de + comandos, sugerencias, comandos mágicos (*magic*) que permiten alterar el + comportamiento de la propia interfaz y un larguísimo etcétera. IPython, + además, sirve como núcleo de los cuadernos Jupyter que integran una shell de + python con visualización de tablas y gráficos para generar documentos estilo + *literate programming*. + +## Machine Learning: ScikitLearn + +ScikitLearn es una librería de machine learning muy potente, implementa gran +cantidad de algoritmos y tiene una documentación extensa, sencilla y educativa. + +Encaja a la perfección con el ecosistema SciPy, ya que se basa en NumPy, SciPy +y Matplotlib. + +## Peticiones web: Requests + +Requests es una librería alternativa al módulo `urllib` aportado por la +librería estándar de python. Se describe a sí misma como «HTTP para seres +humanos», sugiriendo que `urllib` no es cómoda de usar. + +Requests gestiona automáticamente las URL-s de las peticiones a partir de los +datos que se le entreguen, sigue redirecciones, almacena cookies, descomprime +automáticamente, decodifica las respuestas de forma automática, etc. En general +es una ayuda cuando no se quiere dedicar tiempo a controlar cada detalle de la +conexión de modo manual. + +## Manipulación de HTML: Beautifulsoup + +Beautifulsoup es una librería de procesado de HTML extremadamente potente. +Simplifica el acceso a campos de ficheros HTML con una sintaxis similar a los +objetos de python, permitiendo acceder a la estructura anidada mediante el uso +del punto en lugar de tener que lidiar con consultas extrañas o expresiones +regulares. Esta funcionalidad puede combinarse con selectores CSS4 para un +acceso mucho más cómodo. + +Muy usada en conjunción con Requests, para el desarrollo de aplicaciones de +web-scraping. Aunque, si se desea usar algo más avanzado, se recomienda usar el +framework Scrapy. + +## Tratamiento de imagen: Pillow + +Pillow es un fork de la librería PIL (*Python Imaging Library*) cuyo desarrollo +fue abandonado. En sus diversos submódulos, Pillow permite acceder a datos de +imágenes, aplicarles transformaciones y filtros, dibujar sobre ellas, cambiar +su formato, etc. + +## Desarrollo web: Django, Flask + +Existen infinidad de frameworks y herramientas de desarrollo web en python. Así +como en el caso del análisis de datos la industria ha convergido en una +herramienta principal, Pandas, en el caso del desarrollo web hay muchas +opciones donde elegir. + +Los dos frameworks web más usados son Django y Flask, siendo el segundo menos +común que el primero pero digno de mención en conjunción con el otro por varias +razones. + +La primera es la diferencia en la filosofía: así como Django decide con qué +herramientas se debe trabajar, Flask, que se define a sí mismo como +microframework, deja en manos de quien lo usa la elección de qué herramientas +desea aplicarle. Cada una de las dos filosofías tiene ventajas y desventajas y +es tu responsabilidad elegir las que más te convengan para tu proyecto. + +La segunda razón para mencionar Flask es que su código fuente es uno de los más +interesantes a la hora de usar como referencia de cómo se debe programar en +python. Define su propia norma de estilo de programación, basada en la +sugerencia de estilo de python[^pep8] y su desarrollo es extremadamente +elegante. + +Django, por su parte, ha sido muy influyente y muchas de sus decisiones de +diseño han sido adoptadas por otros frameworks, tanto en python como en otros +lenguajes. Lo que sugiere que está extremadamente bien diseñado. + +A pesar de las diferencias filosóficas, existen muchas similitudes entre ambos +proyectos por lo que aprender a usar uno de ellos facilita mucho el uso del +otro y no es aprendizaje perdido. No tengas miedo en lanzarte a uno. + +[^pep8]: + + +## Protocolos de red: Twisted + +Twisted es motor de red asíncrono para python. Sobre él se han escrito +diferentes librerías para gestión de protocolos de Internet como DNS, via +Twisted-Names, IMAP y POP3, via Twisted-Mail, HTTP, via Twisted-Web, IRC y +XMPP, via Twisted-Words, etc. + +El diseño asíncrono del motor facilita sobremanera las comunicaciones +eficientes. Programar código asíncrono en python es relativamente sencillo, +pero ha preferido dejarse fuera de este documento por diversas razones. Te +animo a indagar en esta libreria para valorar el interés del código asíncrono. + +## Interfaces gráficas: PyQt, PyGTK, wxPython, PySimpleGUI + +A pesar de que python dispone de un módulo en su librería estándar para tratar +interfaces gráficas llamado TKinter, es recomendable utilizar librerías más +avanzadas para esto. TKinter es una interfaz a la herramienta Tk del lenguaje +de programación Tcl y acompaña a python desde hace años. + +En programas simples TKinter es más que suficiente (IDLE, por ejemplo, está +desarrollado con TKinter) pero a medida que se necesita complejidad o capacidad +del usuario para configurar detalles de su sistema suele quedarse pequeño. + +Para programas complejos se recomienda usar otro tipo de librerías más +avanzadas como PyQt, PyGTK o wxPython, todas ellas interfaces a librerías +escritas en C/C++ llamadas Qt, GTK y wxWidgets respectivamente. Estas librerías +aportan una visualización más elegante, en algunos casos usando widgets nativos +del sistema operativo en el que funcionan. + +Debido a la complejidad del ecosistema nace el proyecto PySimpleGUI, que +pretende aunar las diferentes herramientas en una sola, sirviendo de interfaz a +cualquiera de las anteriores y alguna otra. Además, el proyecto aporta gran +cantidad de ejemplos de uso. PySimpleGUI aún está en desarrollo y el soporte de +algunos de los motores no está terminado, pero es una fuente interesante de +información y recursos. -- cgit v1.2.3