Data Science en Python

Enlaces, tutoriales, documentación, libros

El autor Jake VanderPlas tiene una serie de artículos divulgativos en O'Reilly sobre Python y módulos de Python para data science:

El libro de Jake VanderPlas se titula Python Data Science Handbook


An end to end implementation of a Machine Learning pipeline es un tutorial que cubre el ciclo completo de un proyecto de machine learning, empezando por la captura (scrapping) de datos, en este caso datos de películas obtenidos de IMDB y TMDB. El objetivo del proyecto es predecir el género de una película a partir de datos textuales y visuales (el poster de la película). Se capturan los datos, se construye un dataset a partir de los datos capturados, se crean modelos prdictivos, tanto modelos tradicionales como modelos que utilizan deep learning. Todo el código en python está disponible en el repositorio github del proyecto y en el README hay instrucciones de instalación. Se utiliza Python 2.7 porque TensorFlow no es compatible con Python > 3.5.

Se recomienda utilizar Conda para instalar los paquetes científicos de análisis de datos en Python (como NumPy o SciPy). Conda es un gestor de paquetes software (tipo apt o yum) hecho en Python y multiplataforma. Sirve para gestionar paquetes de software no sólo de Python (de JavaScript, por ejemplo) aunque se utiliza fundamentalmente para Python. Por encima de Conda, se han creado distribuciones de Python que incluyen también un conjunto de paquetes ya preinstalados y configurados, como por ejemplo Anaconda. En el artículo Conda: Myths and Misconceptions hay una buena explicación de Conda, las diferencias con pip+virtualenv, cuándo utilizar uno u otro y los motivos que llevaron a la creación de Conda. Cuando se usa Conda, lo primero que se hace es crear un entorno y dentro de ese entorno se instala python y los paquetes necesarios.

Using Data Science Tools for Email Audience Analysis: A Research Guide: Email is a crucial vehicle for media companies to generate reader revenue, yet the ways we talk about and measure email have not changed for almost two decades. Flawed, static measures can distract from success and lead to misguided strategies, crippling the development of new products. Using open source techniques from other fields, data scientists are able to provide a more complete picture of an organization’s readers and viewers. The Shorenstein Center Notebooks (written in Python and available on GitHub as a free, open-source tool) take a first step at demonstrating new ways to analyze list composition and performance in order to help editors and publishers ask and answer more nuanced questions.

Otros enlaces

  • A Practical Guide to Feature Engineering in Python: Feature engineering is one of the most important skills needed in data science and machine learning. It has a major influence on the performance of machine learning models and even the quality of insights derived during exploratory data analysis (EDA). In this article, we’re going to learn some important techniques and tools that will help you properly extract, prepare, and engineer features from your dataset.
  • IBM Data Science Community: A landscape diagram for Python data: This article introduces a landscape diagram which shows 50 or so of the most popular Python libraries and frameworks used in data science. Landscape diagrams illustrate components within a technology stack alongside their complementary technologies. In other words, “How do the parts fit together?”
  • Machine Learning Plus: Simple and straightforward tutorials on machine learning in R and Python. No boring theory. Or never-ending technical specs. Just simple guides with clear examples.
  • Ultimate Guide to Web Scraping with Python Part 1: Requests and BeautifulSoup
  • Top 10 IPython Notebook Tutorials for Data Science and Machine Learning
  • Python para todos (3): ScyPy, NumPy, Pandas ...¿Qué librerías necesitamos?: contiene una descripción de librerías de data science para Python:
    • 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.
    • 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 hacer de las situar las visualizaciones en el centro de las tareas de exploración e interpretación de los datos.
    • Bokeh: permite generar gráficos interactivos, y aplicaciones web. Permite generar gráficos 3D atractivos y puede trabajar de forma interactiva y alto 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.
  • Quick Tip: The easiest way to grab data out of a web page in Python: tutorial para hacer web scrapping usando pandas, que tiene una función que devuelve un data frame por cada tabla que tenga la página web
  • Python API tutorial - An Introduction to using APIs
  • Python and JSON: Working with large datasets using Pandas
  • folium - Python Data, Leaflet.js Maps
  • Are dogs appreciated fairly on @dog_rates?: ejemplo de uso de varias librerías para analizar datos de una cuenta de Twitter que da puntuación a perros. La librería que usa para acceder a los datos de Twitter es tweepy. Repositorio Github con un notebook Jupyter.
  • Building a Convolutional Neural Network (CNN) in Keras: A great way to use deep learning to classify images is to build a convolutional neural network (CNN). The Keras library in Python makes it pretty simple to build a CNN.

Libros


Jupyter Notebook

Enlaces

  • Boost Your Jupyter Notebook Productivity: helpful tips for boosting your productivity with Juypter.
  • What is Jupyter?: es una descripción introductoria muy buena sobre Jupyter, para qué sirve, cómo instalarlo y usarlo, cómo integrarlo con Docker para resolver los problemas de distribución del software necesario para ejecurar los programas, etc. Explica el soporte que Github le da a Jupyter (si se sube un archivo .ipynb a un repositorio, Github ejecuta el código y publica una página estática con los resultados). Se menciona el entorno cloud Binder que permite ejecutar notebooks en la nube. Explica la forma de trabajar con Jupyter, Github y Docker para distribuir y compartir notebooks. Hay dockerfiles específicos de Jupyter. Hay extensiones de Jupyter para crear elementos gráficos de aplicación, para hacer dashboards, para crear mapas basados en OpenStreetMap, para hacer visualizaciones de datos en 2D y 3D, para d3.js. Explica para qué sirve la utilidad nbviewer y cómo usarla. También da una lista de notebooks en python sobre temas de data science y machine learning.
  • The Jupyter notebook: documentación oficial
  • JupyterHub: instalación multiusuario de Jupyter. Se utiliza en el courso Foundations de la UC Berkeley
  • Zero to JupyterHub: documentación sobre JupyterHub

Pandas

Enlaces


Visualización de datos

Enlaces


XGBoost

Enlaces