Translate

Mostrando entradas con la etiqueta python. Mostrar todas las entradas
Mostrando entradas con la etiqueta python. Mostrar todas las entradas

martes, 13 de agosto de 2024

Python Polars mejorando el performance de pandas

Durante el último año cada vez más analista que trabajan con Big Data usan Polars frente a Panda para el análisis de datos.

Entre ambas librerías existe una gran diferencia que hace que sea posible que Polars tenga un performance mejor, frente a Pandas, la librería por excelencia.


Cómo está creado Polards frente a Pandas

Polars está escrita en un lenguaje a bajo nivel llamado Rust y además hace uso de forma más fácil del paralelismo en python. Esto provoca que consuma menos recursos.

Cómo usar esta libreria

Igual que usamos pd para importar la librería de pandas, para usar polars puedes usar lo siguiente:

import polars as pl

Para seleccionar columnas puedes usar select de la siguiente forma:

df.select(pl.all())

Y si quieres filtrar filas:
 
df.filter(pl.col("ref") == "c")


Si comparamos con pandas en cuanto a sintaxis puedes verla aquí que se similar pero necesitamos una chuleta ya que cambia. En comparación con pandas en más cercana al lenguaje natual, lo cual es de agradecer.

Eliminar filas con valores nulos:Pandas:
df.dropna()
Polars:
df.drop_nulls()


Visto todo esto para datasets grandes vale la pena medir el performance por si es tan grande la diferencia entre ambas librerias.


Más información


Y una comparación con pandas en cuanto a sintaxis :

jueves, 17 de agosto de 2023

Descargar videos y cursos de Coursera a nuestro PC

Espero que no os hayais encontrado en la situación de encontraros sin datos en esta 'epoca de confinamiento. Hace unas semanas yo me encontré con este tema. 
 
Coursera es mi sitio favorito para aprender nuevas cosas y he sido usuaria desde tiempos inmemorables. Tenemos un montón de MOOC donde aprender de todo y cada vez en más idiomas.

Qué son los MOOC

Los MOOC son cursos masivos abiertos. Como mundo capitalista que somo muchas universidades han aprovechando para monetizar los contenidos que abren y si quieres un certificado para muchos de esos cursos debes de pagar. Pero, hemos venido a aprender no?

El primer curso que completé fue uno de HCI (Human Computer Information) de la Universidad de Standford.El profe después se fue a California y se llevó su MOOC con él. Era inimaginable toda la gente que nos juntábamos ahí para aprender. De todos los países, con nuestra media lengua en inglés. 

He de decir que el profesor le echaba horas y muchas ganas. Era un continuo aprender para él y para nosotros Más tarde empezaron a ofrecer el curso en espanol. Yo hice este curso dos veces, aprovechando además los recursos en castellano, ya que lo más valioso eran las peer reviews. Igualmente muchas empresas de software suelen tener convenios y te dejan usar este software.

Así descubrí balsamiq y otro software de prototipado algo más complejo pero que ayudar a los clientes a ver cómo quedaría esta página. 

Hace unos años crearon una app donde puedes descargarte lecciones. Lo cual está bien, pero sinceramente no quiero ver los videos ni las lecciones en el móvil, yo soy mucho más de PC. 
Así es como me veo mientras escribo esto.




Así que volviendo a esto, confinada, sin conexión a Internet en casa, movil roto (ah olvidé esto). Qué podemos hacer.

Tachán (no, no tengo Chromecast)

En caso de que esteis en ese caso y no queráis tirar de datos y toquéis algo de Python aquí tenéis un script para hacerlo. Debemos seguir unos sencillos pasos para hacerlo.

Pasos que vamos a seguir

Para simplificarlo necesitamos en caso de que tengamos un ordenador windows.
  1. Chrome navegador
  2. Instalar en Chrome cookies.txt
  3. Estar inscritos en el curso que queramos descargar. aunque sea en la modalidad auditoria (audit)
  4. En windows- Abrir CMD
En mi caso quiero descargar este curso que Google además ofrecía gratis.
Machine Learning for Business Professionals

Esta es la dirección web :

Descargar cookies


Si tenemos chrome lo primero debemos instalar una extensión que se llama cookies.txt


Y tras esto, vamos  a visitar la página del curso de coursera y descargar las cookies. Primero pulsamos el icono y después en el texto que nos aparece a lo pop up le damos a descargar cookies.




Corriendo el script para descargar el curso de Coursera

Si estamos en windows debemos abrir CMD  y pegar en mi caso
dl_coursera --cookies /Users/Maria/Downloads/cookies.txt  
--slug machine-learning-business-professionals --outdir mt --how builtin

vale, que debes cambiar aquí:

--cookies xxxx-direccion-donde-tenemos-descargadas-las-cookies-de-coursera-xxxx
Aquí debes poner la dirección donde están las cookies)
--slug xxxx-url-especifica-del-curso-xxxx
Aquí pondrás la dirección del curso
--outdir xxxxxxxx
Aquí el nombre del directorio donde se descargará

Resultado : Ya tenemos los videos en nuestro ordenador

Y et voilá aquí tendremos nuestro cursos con sus videos y materiales
 

Espero que sea de ayuda en tu camino al aprendizaje.

Este curso además aunque tiene ya varios años es super útil para entender los beneficios para las empresas.

viernes, 20 de enero de 2023

Framework para EDA y como automatizar en Python el análisis exploratorio

 Antes de ponernos a hacer algún modelo o análisis y más allá de las herramientas que vamos a utilizar nos va a tocar familiarizarnos con los datos y ver que tipo de modificiones debemos hacerle antes de tenerlos listos 
Para ello existe un tipo de análisis EDA: Análisis de datos exploratorio. 
Lo que podemos definir que entra dentro de este análisis va a depender de las necesidades del dataset y de las preguntas que tenga el negocio, Lo que si es cierto es que una vez hecho uno, podemos reutiliar formulas para aplicarlo al resto de análisis.Sobre todo la parte de visualización  
Así que podemos definir un framework para transformar esos datos

Framework para realizar el análisis exploratorio

Podemos así ver 5 fases que pueden ser iterativas:

Data Sourcing

De dónde vienen los datos, tenemos que modificar el tipo de variable o la codificación? 

Data Cleaning

Existen valores nulos? Debemos eliminar valores atípicos, valores duplicados.

Univariate analysis

Cómo se distribuye cada una de las variables? Valores máximos y mínimos, ...

Bivariate analysis

Existe correlación entre dos variables. Una variabe ayuda  a predecir a la otra?

Multivariate analysis

Y cómo se comportan estas variables en su conjunto? Podemos añadir nuevas variables a partir de las que ya tenemos?

Automatización del análisis exploratorio en Python

Pues visto así esto nos puedo llevar bastante tiempo, pero se irá una inversión a medio plazo. Como comentaba más arriba gran parte del análisis exploratorio para el análisis de datos se puede automatizar. 

df.describe()

Y sobre todo visualizando las variables usando numpy y pandas con seaborn

import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt


Librerias para la automatización del EDA en Python

Hasta la fecha ya tengo en mi bookmark tres librerias que automatizan esta parte. Sobre todo a mi me parece útil para hacer visualización tras transformar datos o creas nuevos. Estas librerias también se puede utulizar para comparar los datos que tenemos en nuestros train dataset de forma muy rápida. 
Las tres librerias que comento aquí hacen uso de tan sólo 2-3 líneas de comando.

Por mi orden de preferencia:
  1. 1. Pandas profiling, que nos da un informe de spoiler como este. Aunque los comandos avanzados no son muy avanzados, aquí tienes como instalar esta librería en Python
  2. 2. Dataprep 
  3. 3. Sweetviz, que es más ligero de pandas profiling

Quiero saber más sobre EDA!!

lunes, 4 de enero de 2021

Soluciones de Machine Learning en GCP - Google Cloud Platform

Una de las cosas que más me ha impactado sobre Google Cloud y los demás proveedoras en la nube como Amazon AWS y Azure es la cantidad de servicios que ofrece sobre Machine Learning. Durante mi carrera profesional siempre he encontrado que la democratización del acceso a diferentes datos siempre ha sido bastante complicada desde un punto de vista técnico y los proyectos duraban annos, así que mucha empresas, aburridos por el pace de estos directamente abandonaban los esfuerzos puestos en ello y se dejaban de priorizar estos. 
Estos últimos dos annos GCP se ha propuesto que sea cada vez más facil tener acceso a la automatización de procesosy nos ofrecen diferentes formas de desarrollar y usar estos algoritmos sin tener que saber muy bien que hacen. Además el hecho de poder pagar por los recursos que necesitemos, sólo cuando los necesitamos y sin necesidad de tener un ordenador super potente, quita muchas barreras a usuarios que tienen ordenadores lentos.

Que soluciones ofrece Google Cloud Platform en materia de aprendizaje automatico.


martes, 19 de mayo de 2020

Exploratory Data Analysis- EDA- en Python para vagos con pandas_profiling

A la hora de analizar datos, sobre todo si nos enfrentamos a un dataset nuevo nos podemos tirar varias horas intentando comprender que calidad tienen los datos.Para eso siempre bueno empezar nuestro análisis por EDA para saber que datos debemos transformar o la calidad de los mismos

Qué es EDA

EDA responde al nombre de Exploratory Data Analysis.EDA es especialmente importante para saber si tenemos valores nulos, si puede haber errores en nuestros datos o incluso comprender la distribución de estos por si debemos normalizarla para aplicarle determinados test no paramétricos o paramétricos. Así vamos aprender de nuestro dataset en plan primera cita.


via GIPHY

Echándole un vistazo a nuestro dataset

Primeras impresiones

Qué pinta tiene por delante

df. head()

Y que tal se ve por detrás

df.tail()

Qué tamano tiene

df.shape()
df.columns

Eso es todo por ahora de un primer vistazo. Pasemos a las preguntas
Pasamos a las preguntas

Cómo te describes

df.describe
df.dtypes

Y en fin, nos pdría dar varias horas con esto.

Vale, que es perder un poco la magía, pero que tal si tuvieramos un informe completo de todas estas preguntas y muchas más, así nos hacemos a la idea de que preguntar despues, como una app de esas de ligoteo, donde además vamos a poder ver los gráficos de muchas de estas cosas.

Vale, pues eso ya lo tenemos en Python y lo podemos usar con pandas. Os presento a pandas-profiling

Cómo se usa pandas profiling


Pues lo primero que debemos hacer es instalarlo
Y todo lo que vamos a tener que hacer es 
1. Instalar la libreria
pip install pandas-profiling
2. Importar ambas librerías 
  • import pandas as pd
  • import pandas_profiling
3. Convertir los datos a un dataframe

4.Ponerle un título a nuestro informe

5. Exportar el informe al formato que queramos (por ahora sí o sí en html)

6. Ya tenemos nuestor informe sin tener que programar todo la anterior.

Qué incluye el informe de pandas profiling



  • Inferencia de tipos: detecta los tipos de columnas en un marco de datos.
  • Elementos esenciales: tipo, valores únicos, valores faltantes
  • Estadísticas cuantiles como valor mínimo, Q1, mediana, Q3, máximo, rango, rango intercuartil
  • Estadísticas descriptivas como media, modo, desviación estándar, suma, desviación absoluta media, coeficiente de variación, curtosis, asimetría
  • Valores más frecuentes
  • Histograma
  • Resaltado de correlaciones de variables altamente correlacionadas, matrices de Spearman, Pearson y Kendall
  • Valores perdidos matriz, recuento, mapa de calor y dendrograma de valores perdidos
  • El análisis de texto aprende sobre categorías (mayúsculas, espacio), guiones (latín, cirílico) y bloques (ASCII) de datos de texto.
  • El análisis de archivos e imágenes extrae tamaños de archivos, fechas y dimensiones de creación y escanea en busca de imágenes truncadas o aquellas que contienen información EXIF.

Así que nada, ahora ya nos ha sobrado tiempo para hacer las cosas importante de nuestra vida.

via GIPHY


Este informe nos ahorra mucho tiempo.
Si quieres saber más sobre él , aquí tienes la documentación

Documentación de la librería

https://pypi.org/project/pandas-profiling/


lunes, 11 de mayo de 2020

Eligiendo como visualizar el análisis de datos en 🐍 Python para EDA usando pandas

Hace unos días, me di cuenta que necesitaba una forma de visualizar datos para Adhoc análisis y EDA.
Siempre he sido bastante reacia a perder el tiempo haciendo gráficos en matplotlib porque me parece muy complicado el disenno.

Pero, tras haber perdido parte del código que usaba en Python para hacer todo más rápido por no subirlo a Github, me he dado cuenta de que necesito esto.


Primero vamos a ver que tipo de librerias tenemos en Python que podemos usar en Jupyter Notebook

  • matplotlib
  • Seaborn
  • bokeh
  • plotly
  • cufflinks (plotly + pandas)


matplotlib

 Es la libreria por antonomasia para usar con Pandas.

Seaborn

Basada en matplotlib tiene automatizados muchos gráficos para hacerlos de forma más sencilla. La parte negativa es que no es interactiva

bokeh

La sintaxis y el modelo, no tiene nada que ver con las dos anteriores. Así que hay que aprenderla desde cero. Como puntos destacados puedes exportarse para usarse con JS y es interactiva, eso significa que puedes hacer dashboards con los que se pueden seleccionar variables por ejemplo.

plotly

Es una librería propietaria, pero permite hacer muchos gráficos. Tiene buena usabilidad, así que no necesitas aprender mucho código y la documentación es muy buena. Hay una versión de pago, así que no es totalmente libre. Sería como el debian de las librerias de visualización de datos en Python.

viernes, 1 de mayo de 2020

Segmentando clientes en Python usando el modelo RFM

 Ya en 2016 escribía un post sobre el modelo RFM de segmentación de clientes, para qué servía o qué preguntas podíamos responder y cómo se podía hacer una sencilla consulta en SQL para conseguirlo.
Cinco annos más tarde puedo decir ya con bastante más experiencia que estos datos 
  • 'Recency
  • Frecuency
  • Monetary Value
no se encuentran tan facilmente en las empresas en las bases de datos. Así que para empezar nos va a tocar pasar bastante tiempo limpiando los datos. El modelo sigue siendo utilizado para la segmentación de CRMs y nos va a dar buenas pistas de los usuarios en lo que debemos que poner más atención ya que son nuestros mejores usuarios. 
También podemos usar el mismo modelo para ver que clientes nos han abandonados o qué clientes están inactivos y potencialmente podemos volver a activar. Email Marketing preparado.
Para esto hay diferentes formas de hacerlo. Aquí voy a tirar del usor de percentiles ya que es una de las formas másfáciles de calcular ya que tenemos funciones para ello y además de las que mejor resultado tienen.

Qué formato tienen que tener nuestros datos

Para poder realizar este análisis vamos a necesitar datos de forma transaccional. Es decir por cada acción que haga nuestro usuario como por ejemplo una compra de ecommerce, vamos a tener una línea. Estas transacciones normalmente tienen un ID Además vamos a necesitar que al hacer esa transacción también se guarde un id de cliente. Siempre es más fácil trabajar con numeros y id que con nombres, pero esto último lo podemos arreglar al limpiar los datos antes del analísis. Así que no cunda el pánico.

Para no hace muy largo este post voy a poner un ejemplo con código de la parte de frecuency y recency para poner labels a nuestros usuarios en función de estas dos variables. Así podremos saber en qué fase están nuestros clientes inactivos, activos, engaged, nos abandonado (churn). Estos nos va a ayudar a crear algunas métricas como el churn rate. Qué porcentaje de clientes no vuelven a comprarnos.

Etiquetar a nuestros clientes

Un ejemplo de como podemos etiquetar a nuestros clientes es
- Activos - Active
- Inactivos - Inactive
- Abandonado - Churn


Para llevar acabo el analisis completo de RFM, aquí puedes acceder a un script donde la analista usa también los percentiles. Así que va más allá de lo explicado aquí con la creación de etiquetado.
En este Jupyter Notebook además comenta con bastante detalles que preguntas hay que hacerse para limpiar los datos y qué decisiones toma en base a como están los datos.





domingo, 14 de abril de 2019

Breve resumen Python para análisis de datos - librerías

Tras tres annos usando Python practicamente a diario para análisis de datos creo que ya puedo dar algunos consejos para analistas que quieran aprender el lenguaje para hacer análisis de datos.

Al principio puede parecer un poco overhelming toda la información que pueda aparecer en Internet, sin embargo hay determinadas librerias que vas encontrar en todas partes y que te permitirán hacer el 80% de tu trabajo.

Qué librerías en Python son las más usadas para análisis de datos y Machine Learning

Pandas, los cubiertos del análisis de datos

La primera libreria que deberías aprender a usar para empezar a hacer cosas es Pandas
A la hora de usar pandas debes pensar siempre en una spreadsheet u hoja de calculo con formato tabular.Manipulas datos en  dos dimensiones. tienes filas y columnas. Esta librería tiene diferentes funciones contruidas que te haran todo más facil, al estilo de funciones de excel pero más rápido y fácil de usar y procesar.

Pandas te permite manipular y limpiar los datasets de una forma fácil. La libreria Pandas usa dos tipos de estructuras de datos de tipo objet( es decir, complejos). Dataframes (el más usado) y Series.

Además puedes crear pivot table para presentar tus resultados. En este caso Pandas te permite además, si quieres usar índices (index) para que sea más fácil. El index hace que la curva de aprendizaje sea un poco más larga, así que mi recomendación es ir haciéndote a ellos poco a poco.

Si eres nuevos en Python para análisis de datos deberías empezar entendiendo como funciona Pandas, ya que los usarás prácticamente cada vez que hagas un análisis.

Numpy para estructuras matrices y procesimiento matemático

El padre de Pandas es Numpy. De hecho Pandas está construida usando Numpy. Muchas veces en pandas se tarda mucho en hacer cálculos y entonces es más eficiente (la operación se va a procesar antes) al usar Numpy. Esto sobre todo es debido a un tipo de estructura de datos de tipo objeto que se llama Narray.

Scipy , añade analísis estadístico a tu análisis

Con las dos librerias de arriba ya podrías empezar a trabajar haciendo análisis descriptivos. Sin embargo,  vas a necesitar tirar de análisis estadístico en algún momento- Scipy es un librería. Pongamos que necesitas hacer una regresión o que estás analizando A/B tests. Scipy te ayuda con ello.

Scikit-learn , añade Machine Learning de forma fácil. 

Esta librería ha sido tendencia estos últimos años debido a que es usada por Data Scientifist para hacer su trabajo con un montón de algoritmos contruidos para no tener que preocuparte de nada.
Está escrita sobre Numpy y Scipy. Además tiene funciones para entrenar los datos (train) y crear modelos. Es muy fácil de usar y si sabes lo que estás haciendo (matematicamente hablando) es muy eficiente y limpia para aplicar Machine Learning.

Matplotlib , visualiza tus resultados

Además de esto tienes librerias para visualización de datos, siendo matplotlib la más usada. Yo no soy muy fan de ella y prefiero exportar los datos en csv y llevarme los datos a PowerBi o Tableau, pero me matplotlib ha sacado de algún apuro alguna vez, debo confesar. Aquí puedes ver todos los tipos de gráficos que puedes hacer con ella https://matplotlib.org/3.2.1/gallery/index.html


Como usar las librerías en Python

Una vez que tenems claro las librerias que queremos usar, vamos a pasar a ver como se usan.
Como en todos los lenguajes de programación deberíamos tenerlas instaladas (para no complicar mucho esto )

Python es un lenguaje muy flexible, y por ello y para que todos podemos entendernos, existen una convenciones que todo el mundo suele seguir a la hora de llamar a estas librerías.

Una vez tenemos instaladas nuestras librerías podemos usar llamar a una librería o sólo a la parte que creamos que vamos a necesitar. A esto se le llama importar.

Si queremos llamar llamar a toda la librería de pandas diremos. Si tenemos muchas librerías en memoría va a hacer más pesado el programas. Además tener sólo lo que vamos a necesitar, va a hacer que focalicemos en lo que estamos haciendo y una vez volvamos a leer nuestro código (o el del que leyó el programa va a ser más fácil de entender que está haciendo).

Ya que pandas es la que más usamos la importaremos entera como

import pandas as pd

Ahora imagina que queremos hacer una regresión. Esto sólo va a pasar una vez en nuestro programa. En ese caso es mucho importar sólo lo que vamos a usar. Por ejemplo diremos de sklearn, carpetita modelos lineales usaremos regresión lógística, de métricas solo queremos estas, etc

from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import roc_auc_score, accuracy_score, f1_score, confusion_matrix, classification_report

Convenciones para usar las diferentes librerías


Como comentaba anteriormente hay convenciones para llamar a estas librerías, aunque si qusieras llamarlas de cualquier otra forma Python seguiría funcionando.

Por el bien de la salud mental de tus compañeros y de la tuya misma sigue estas convenciones guilo-guiño

En caso de pandas (pd), numpy(np) y matplot(plt), puedes importar las librerías enteras. En cambio no deberías importar enteras ni Scipy, ni Scikit learn, sino sólo los módulos que quieras usar. Esto quedaría así en tu código como ejemplo

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

y para las otras dos librerías sería en plan ejemplo

from scipy.stats import norm, binom
from sklearn.linear_model import LogisticRegression

Espero esto sirva de introdución en tu viaje en el aprendizaje de Python para analisis de datos