Translate

martes, 6 de octubre de 2020

Bigquery user interface para principiantes

Este ultimo año me he convertido en una advocate de Google Cloud y de BigQuery y me ha tocado enseñar como funciona. Parece que muchos analistas digitales miran con bastante recelo a la interfaz de usuario de BigQuery con toda esa parafernalia de Ingenieria de Datos o cientifico de datos. La buena noticia es que 

En realidad BigQuery quita mucha complejidad a las asi que se me ha ocurrido llenarla de dibujitos y colorines y explicar como es la arquitectura de datos para el usuario final, tipo analista digital.

Bueno, el diseño no es lo mio, y la verdad es que  habría que echar la culpa del resultado final, no soy a mi (mea culpa) sino tambien a Microsoft por su programa ´Paint 3d´.

Una vez que accedemos a GCP Google Cloud Platform   en nuestro proyecto sólo tendremos que poner en el buscador BigQuery y nos llevará a la siguiente pantalla.

Una vez en seleccionado nuestro proyecto vamos a crear un dataset para poder analizar datos.
En nuestro caso se va a llamar eCommerce, ya que vamos a medir transacciones en él.

Aqui es donde he visto que los principiantes tienes mas problemas con la interfaz.

Dentro de nuestro proyecto, vamos a tener
- Un proyecto
- Donde crearemos un dataset
- Este Dataset tendrá tablas
- Las tablas tendrán filas y columnas

- Además para tener mayor acceso a los datos vamos a crear vistas, pero esto lo explicaré más abajo
#Si miramos la interfaz de usuarios podemos ver la siguiente estructuras en nuestros proyectos.


Practicamente de un vistazo, bajo el menú de la izquierda, podemos ver todo lo necesario para hacer nuestras queries. Y además si miramos el resto de la pantalla podemos encontrar las misma referencias. He añadido las referencias (dibujitos) 

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.





lunes, 6 de abril de 2020

User story - historia de usuario - en Metodologias Agiles

Qué son las User stories o historia de usuarios
Las User Stories son artefactos usados en Scrum, el framework más usado en Agile o Metodologías Ágiles.

Para qué se usan la user story en Agile
En Agile, siempre se intentan descomponer las tareas en unidades más pequenas. Las historias de usuario suponen la parte más pequena en la que trabajar en un producto o feature.

Cómo se crean historia de usuarios
Normalmente este siguen el siguiente esquema

“Como [ tipo de usuario ] 
necesito/quiero [ el qué ] 
así puedo [ beneficio ]”

Por qué usar historias de usuarios para definir nuestras tareas
Con esta sentencia ponemos al usuario en el centro de nuestras tareas tratando de resolver un problema que el usuario tiene por encima de lo que nosotros creamos que es mejor o más fácil de hacer

He creado algunos ejemplos de historia de usuarios en github qué puedes visitar aquí

lunes, 23 de diciembre de 2019

Trabajar en Agile o metodologías Ágiles

Cada uno tiene su historia y

De cómo Agile llegó a mi vida

Hace un par de años empecé a trabajar en el Gobierno Británico. Ya conocía GDS por diferentes cursos que había hecho sobre Experiencia de Usuario y porque siempre me ha interesado el tema de la colaboración como Socióloga que soy la psicología social siempre me ha fascinado.

También conocía de oídas Agile y las metodologías Ágiles. Como analista digital siempre me ha tocado mi parte de project management y negociación. Al estar en el centro del negocio nos toca lidiar con todo tipo de stakeholders e influenciar a los programadores o techies para que hagan los cambios que necesitamos. Sin ellos no samos nadie. Así que desde que empecé en digital esto soy una ferviente leedora de blog y libros de como ser más productivos y suelo guardar los mejores artículos aquí  https://www.scoop.it/topic/productividad-y-tic,

Pues bien, el papel de transformación digital en GDS no puede entenderse sin Agile. Tengo que decir que al principio me costó pillar que estábamos haciendo y por qué trabajábamos así. Sin embargo ahora me he dado cuenta que la visión de Agile en la creación de software es la correcta. Entiendo que a las empresas les pueda dar un poco de miedo este cambio, sin embargo, cada vez que hablo con otros compañeros del sector que siguen trabajando con otras metodologías me reitero que Agile es la forma adecuada de trabajar para crear productos digitales - desarrollo de software.

De que va todo esto de Agile...


  • De entrega rápida de software, en vez de mega proyectos que nunca se terminan (te suena...)
  • De Trust o confianza y mucha transparencia. Hay mucho de psicología social y sociología en todo esto para los miembros de la empresa. 
  • De tener en cuenta a los usuarios para darles lo que necesitan, adaptando el producto a sus necesidad en vez de que ellos se adapten al producto. Al fin y al cabo vivimos en un mundo cada más global donde la competición es cada vez más grande y los productos están en constante evolución.


Y si lo pensamos, asi es como deberia ser. Deberiamos confiar en nuestros jefes, en nuestros compañeros de equipo y en las personas que tenemos a nuestros mando. Una vez que todo esto se ha conseguido, todo va como la seda. Pero hasta que llegamos allí va a un largo camino y para ello alguien debe velar por que esto se pueda hacer y que esa confianza no se rompa.

Ya había comentado que Agile es una metodología, pero seguro que habrás oido hablar de Scrum, Lean ,de Kanban, de poner al usuario en el centro,... .Ahí un va un poco de luz a todo esto.

Agile es una metodología. Todo empezó con un manifiesto,aquí puede leer los principios del manifesto en inglés.Y  aquí puedes leerlo en castellano.
Sin embargo aunque esos principios no han ido cambiando con los años, si que se lo ha hecho como utilizarlos.

Dentro de Agile podemos encontrar dos frameworks ampliamente usados- Scrum (el más usado y más reglado) y Kanban. Sí, a mi también me sonaba a chino.


viernes, 6 de diciembre de 2019

MVCC - multiversion concurrency control en base de datos

Hace unas semanas me pasó un marrón considerable. Fui a sacar dinero al cajero y úna vez puestos mis 400 euros, el cajero me dió un error y suspendió la transacción. Así que como yo quería mi dinero volví a repetirlo todo y esta vez si obtuve m dinero.
Cual es mi sorpresa cuando miro en la APP que había sacado dinero dos veces.

Seguido de un sudor frio y un ahora qué

Empecé a imaginarme tener que llamar  a mi banco, al cajero, a mi cuenta de Reino Unido, a ver como explico yo que estaba diciendo la verdad y nada más que la verdad. Joder 400 euros, es una pasta eh. Y no tengo testigo. A ver si le da mi dinero al segundo que llegue... overthinking

Y al llegar a casa y llamar al banco, me dicen que todo esta bien y que ese dinero esta en mi cuenta. 
Pero, sennorita, que yo lo he visto con mis ojos. Y ella, pues vuelve a mirar. Tachán ahí estaba.

Acaso he entrado en un agujero del tiempo del camino del banco. Nota mental - Dark y Rick y Morty me están afectando seriamente.

Pues no, tiene pinta que ha sido tema MVCC.  Y aquí ya hay que ponerse un poco nerd.

Qué es el MVCC

El control de concurrencia mediante versiones múltiples (Multiversion concurrency control o MVCC) es un método para control de acceso generalmente usado por SGBDs para proporcionar acceso concurrente a los datos, y en lenguajes de programación para implementar concurrencia.
En la wikipedia tienes más información  https://es.wikipedia.org/wiki/Multiversion_concurrency_control

Para que sirve el Multiversion concurrency control

Pues para que no pasen errores como el mio. Yo pedí sacar un dinero y seguramente hubo un timeout en medio de la query. Al usar el banco de otra sucursal en mi app salió como que ya había cogido ese dinero. Entonces miré en la app, y mi dinero había desaparecido. Más tarde el cajero del banco mandaría un código de error como que no se había completado la transacción. Así que la base de datos de mi banco volvió al estado anterior, es decir no completó esa transacción.

Mmmmmm todo tiene sentido ahora. Y oye, esto es bastante importe porque estas cosas pueden pasar varias veces al día. 

Cómo funciona el control de concurrencia mediante versiones múltiples

La verdad, es que el tema es un poco complicado de explicar con palabras, así que lo mejor es tirar de diagramas. Dejo aquí un artículo que lo explica muy bien. 

En que bases de datos se puede dar el MVCC