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:
- Todos los artículos están en Posts by Jake VanderPlas: Python, scikit-learn, handling missing data, Pandas, Seaborn, Support Vector Machines, etc
- A Whirlwind Tour of Python: tutorial de python, sintaxis, tipos de datos, módulos para data science, etc. Este artículo está disponible como ebook en formato epub, mobi y pdf
- Introduction to scikit-learn
- Varios artículos sobre Pandas: Introducing Pandas Objects, Operations in Pandas, Data Indexing and Selection, Pivot Tables in Python
- Introduction to Support Vector Machines
- Data visualization with Seaborn
- Handling missing data
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
- 10 Free Must-Read Books for Machine Learning and Data Science: Quick collection of such books to start your fair weather study off on the right foot. The list begins with a base of statistics, moves on to machine learning foundations, progresses to a few bigger picture titles, has a quick look at an advanced topic or 2, and ends off with something that brings it all together.
- 18 New Must Read Books for Data Scientists on R and Python
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
- Intro to Pandas for Excel Super Users
- Common Excel Task in Python: Vlookup with Pandas Merge
- Common Excel Tasks Demonstrated in Pandas
- Common Excel Tasks Demonstrated in Pandas - Part 2
- Python Pandas Tutorial: A Complete Introduction for Beginners
Visualización de datos
Enlaces
- The Next Level of Data Visualization in Python: Plotly, How to make great-looking, fully-interactive plots with a single line of Python
- Interactive Visualizations In Jupyter Notebook: gráficas interactivas usando Plotly y el módulo ipywidgets que permite añadir elementos de GUI interactivos a un notebook (menús, input box, etc). El módulo ipywidgets es una extensión de Jupyter Lab, y se instala de una forma específica
- plotly.py GitHub Repo: con la información de releases, instalación. Incluye Plotly Express. La información de instalación de Plotly Express en los artículos de Medium está obsoleta
- Plotly Express
- (2019) Introducing Plotly Express: Plotly Express is a new high-level visualization library: it's a wrapper for Plotly.py that exposes a simple syntax for complex charts. The code used to generate the screenshots below is available in our walkthrough notebook which you can load up on Binder to play with right now in your browser without installing anything. Once you import Plotly Express (usually as px), most plots are made with just one function call that accepts a tidy Pandas data frame, and a simple description of the plot you want to make.
- (15/10/2020) Visualization with Plotly.Express: Comprehensive guide
- (14/06/2019) Getting Started with Plot.ly: tiene un ejemplo bueno de timeseries chart, con una paleta de color en gama de azules usando
sns.color_palette
- (23/05/2019) Plotly Express Yourself: uso del atributo
template='ggplot2'
en la funcionpx.line
para cambiar el aspecto de la gráfica