/data-science-python-tricks

Python tricks about pandas, numpy and Scikit-Learn

Primary LanguageJupyter Notebook

Introducción

Durante muchos años he desarrollado mi carrera profesional usando R en casi un 90% en todas mis rutinas de trabajo. En los últimos años estoy viendo que Python se está convirtiendo en una herramienta complementaria muy potente en casi todas las áreas en las que se desarrolla R, pero con una visión más generalista. Python no está enfocado al campo de Data Science pero tiene desarrolladas muy buenas herramientas.

XKCD | A webcomic of romance, sarcasm, math, and language

Por esa razón he empezado a investigar y descubrir el mundo de Python en Data Science y aquí voy a ir dejando mis scripts de Python y mis notebook de jupyter que voy a ir generando mientras pruebo diferentes paquetes y funciones.

Aunque tal vez me haya saltado un paso (afianzar mis conocimientos en Python), he empezado con dos libros de referencia en el análisis de datos con Python:

  • Python Data Science Handbook, Jake VanderPlas amazon.es

  • Python for data Analysis, Wes McKinney amazon.es

Python Data Science Handbook Python for Data Analysis

No creo que estemos obligados a decidir entre R y Python, creo que son dos herramientas muy poderosas y que pueden encajar perfectamente en una rutina de trabajo robusta. En DataCamp hacen una buena comparación de los pros y contras de cada lenguaje, Choosing R or Python for Data Analysis? An Infographic.

Personalmente quiero centrarme en los siguientes paquetes de Python:

  • pandas
  • NumPy
  • matplotlib/seaborn
  • Scikit-Learn
  • Otros paquetes y funciones interesantes con SciPy, StatsModels, ...

Todo ello enfocando siempre los resultados a Data Science. Pandas y NumPy son las herramientas necesarias para trabajar con los datos, matplotlib y seaborn los paquetes para representar gráficamente los resultados y por último Scikit-Learn para el aprendizaje y modelización.

hay otros muchos paquetes interesantes en Python, como pueden ser SciPy y statsmodels

También es interesante el proyecto anaconda que engloba todo un universo de software y paquetes en torno a Python y R. Gestiona los paquetes y las diferentes versiones así como GUIs para Python, Spyder, y R, RStudio.

Pandas

Si estás interesado en trabajar con Pandas te sugiero leer los siguientes trabajos con Pandas y sus diferentes características y posibilidades (en inglés).

Introduction to the Pandas
Indexing-Selection-Filtering in Pandas
Important Methods in Pandas
Arithmetic Operations in Pandas
Sorting and Ranking in Pandas
Summarizing And Computing Descriptive Statistics in Pandas
Reading and Writing Data in Pandas
How to Fix Missing Data in Pandas
Data Transformation in Pandas
Hierarchical Indexing in Pandas
Combining And Merging Datasets in Pandas
Reshaping And Pivoting in Pandas
Groupby in Pandas
Working With Groupby in Pandas
Pivot Tables in Pandas
Categorical Data in Pandas
Working With Text Data in Pandas
Practical Data Analysis with Pandas
Multiple Selecting-Filtering in Pandas

Python Data Analysis Library

pandas es una biblioteca de código abierto con licencia BSD que proporciona estructuras de datos y herramientas de análisis de datos de alto rendimiento y fácil de usar para el lenguaje de programación Python que permite el análisis de datos a través de series y dataframes.

Cheat Sheet

pandas Cheat Sheet from DataCamp

Otras fuentes

A quick guide to the basics of the Python data analysis library Pandas, including code samples | DataCamp
Rewrite your SQL queries in pandas

matplotlib

matplotlib es una biblioteca de trazado 2D de Python que produce figuras de alta calidad de publicación en una gran variedad de formatos impresos y entornos interactivos en todas las plataformas. matplotlib se puede usar en scripts Python, shells Python e IPython, Jupyter notebook y servidores de aplicaciones web.

matplotlib intenta hacer que las cosas sean fáciles. Puede generar gráficos, histogramas, espectros de potencia, gráficos de barras, diagramas de errores, diagramas de dispersión, etc., con sólo unas pocas líneas de código. Para ver algunos ejemplos y una amplia galería.

El módulo pyplot proporciona una interfaz parecida a MATLAB, particularmente cuando se combina con IPython. Para el usuario avanzado, tiene un control total de los estilos de línea, propiedades de las fuentes, las propiedades de los ejes, etc., a través de una interfaz orientada a objetos o mediante un conjunto de funciones.

matplotlib

Cheat Sheet

matplotlib Cheat Sheet from DataCamp

seaborn

Según se definen ellos mismos, seaborn es una biblioteca de visualización de Python basada en matplotlib. Proporciona una interfaz de alto nivel para dibujar gráficos estadísticos atractivos.

seaborn

Otras fuentes y recursos

Galería de ejemplos realizados con seaborn

NumPy

NumPy es una extensión de Python, que le agrega mayor soporte para vectores y matrices, constituyendo una biblioteca de funciones matemáticas de alto nivel para operar con esos vectores o matrices. El ancestro de NumPy, Numeric, fue creado originalmente por Jim Hugunin con algunas contribuciones de otros desarrolladores. En 2005, Travis Oliphant creó NumPy incorporando características de Numarray en NumPy con algunas modificaciones.

NumPy es el paquete fundamental para la informática científica con Python. Contiene, entre otras cosas:

  • Un poderoso objeto de matriz N-dimensional
  • Funciones sofisticadas (difusión)
  • Herramientas para integrar el código C / C ++ y Fortran
  • Álgebra lineal, transformada de Fourier y generación de números aleatorios

Además de sus múltiples usos científicos obvios, NumPy también se puede usar como un contenedor multidimensional eficiente de datos genéricos. Se pueden definir tipos de datos arbitrarios. Esto permite a NumPy integrarse de manera rápida y sin problemas con una amplia variedad de bases de datos.

NumPy está licenciado bajo la licencia BSD, lo que permite su reutilización con pocas restricciones.

Scikit-Learn

Scikit-Learn (anteriormente scikits.learn) es una biblioteca de aprendizaje de máquina de software libre para el lenguaje de programación de Python. Scikit-Learn Cuenta con varios algoritmos de clasificación, regresión y agrupación, incluyendo máquinas de vectores de soporte (SVM), random forest, k-means y DBSCAN, ... y está diseñado para trabajar conjuntamente con las bibliotecas numéricas y científicas de Python, NumPy y SciPy.

El proyecto Scikit-Learn comenzó como scikits.learn, un proyecto Google Summer of Code de David Cournapeau. Su nombre proviene de la idea de SciKit (SciPy Toolkit), una extensión de terceros desarrollada por separado y distribuida para SciPy. La base de código original fue posteriormente reescrita por otros desarrolladores. En 2010, Fabian Pedregosa, Gael Varoquaux, Alexandre Gramfort y Vincent Michel, todos de INRIA tomaron el liderazgo del proyecto e hicieron su primer lanzamiento público el 1 de febrero de 2010. A partir de 2017, Scikit-Learn está en desarrollo activo.

Otros paquetes y funciones interesantes