Aprende Pyspark sin complicaciones

Hace tiempo un gran data engineer me preparó una máquina virtual para hacer pinitos con pyspark y llevaba tiempo pensando en como poder publicar trucos y ejemplos con pyspark sin necesidad de máquinas virtuales y empleando notebooks. Ya he encontrado la mejor manera, los contenedores de docker. Cuanto más profundizo en docker más me gusta trabajar con contenedores y con esta entrada me váis a entender perfectamente. El primer paso es instalar docker y arrancar el terminal. La idea de docker es ejecutar un contenedor en cualquier máquina independientemente del sistema operativo. Instalar spark en windows es un dolor de cabeza, si disponemos de una máquina virtual con linux es más sencillo, pero imaginad que, con dos líneas de código ya podéis trabajar con un notebook y pyspark, pues eso lo podemos hacer con docker. ...

7 de septiembre de 2018 · rvaquerizo

Truco Python. Seleccionar o eliminar variables de un data frame en base a un prefijo, sufijo o si contienen un caracter

A la hora de seleccionar las características de un data frame, es posible que nos encontremos con la necesidad de seleccionar o eliminar características del data frame y que el nombre de esas características tenga un determinado patrón. Esta labor la podemos realizar mediante selección de elementos en listas; en esta entrada del blog vamos a tener tres tipos de selecciones: Seleccionar o eliminar aquellas variables que empiezan por un determinado prefijo. Seleccionar o eliminar aquellas variables que contienen una cadena de caracteres. Seleccionar o eliminar aquellas variables que finalizan con un sufijo. Para ilustrar este trabajo, generamos un data frame con datos aleatorios y 10 columnas: ...

22 de mayo de 2018 · rvaquerizo

Truco Python. Agrupar variable en función de la frecuencia

Me ha surgido la necesidad de crear una nueva variable en un data frame a partir de la frecuencia de otra; es decir, quedarme con los valores más frecuentes y aplicar una categoría “resto” para aquellos valores que no estén entre los más frecuentes. Para realizar esto, se me ha ocurrido la siguiente función en Python: def agrupa_frecuencia(var_origen, var_destino, df, grupos, valor_otros): df_grp = df[var_origen].value_counts() list_grp = list(df_grp.iloc[0:grupos,].index) df[var_destino] = df[var_origen].map(lambda x: x if x in list_grp else valor_otros, na_action='ignore') Es una función con más parámetros que líneas, pero necesitamos una variable de origen, una variable de destino que será la que calcularemos, el data frame sobre el que realizamos la tarea, el número de grupos más otro que será el «resto» y dar un valor a ese «resto». La función lo que hace es una tabla de frecuencias ordenada descendentemente con value_counts() y creamos una lista con el número de grupos que deseamos. Por último, mediante lambdas, si la variable origen está en la lista generada anteriormente le asignamos el mismo valor; en caso contrario, asignamos el valor «resto». ...

18 de mayo de 2018 · rvaquerizo

Libro de R de Carlos Gil

Muchos de los lectores de esta bitácora conocéis https://www.datanalytics.com/, el blog de Carlos Gil. In él ha publicado un libro/manual de R de acceso libre para todos aquellos que necesitéis una guía que abarque desde lo más básico al tratamiento de datos con R, pasando por Shiny y análisis estadísticos de esos «viejunos» tan denostados últimamente. De todas formas, no sé cómo no deja este mundillo y se dedica plenamente a su https://martinacocina.es/. In palabras de mi hijo: «El mejor brunch de Madrid, un 10». Saludos.

10 de abril de 2018 · rvaquerizo

Truco Python. Restar meses con formato YYYYMM

La operación con fechas en meses con el formato YYYYMM es tarea habitual cuando trabajamos con tablas particionadas. De hecho, hay una entrada en el blog sobre esto muy popular. Me ha surgido este tema con Python y os pongo la función que he creado: def dif_mes(d1, d2): return (d1 // 100 - d2 // 100) * 12 + d1 % 100 - d2 % 100 # Ejemplo de uso print(dif_mes(201812, 201709)) Muy sencilla, por si os surge la necesidad. Saludos.

10 de abril de 2018 · rvaquerizo

ILOVEFS18 Amor por el software libre

Los días 13 y 14 de febrero no podéis perderos en Madrid el ILOVEFS18, un evento al que, si estáis por aquí, no podéis faltar. Para más información tenéis el siguiente link: http://medialab-prado.es/article/ilovefs18 ¡Nos vemos!

12 de febrero de 2018 · rvaquerizo

BeautifulSoup. Web scraping con Python o como las redes sociales pueden estar cambiando la forma de escribir

Desde hace tiempo, mis frases son más cortas. Creo que es un problema de las redes sociales, sobre todo Twitter, que está cambiando mi comportamiento. Para analizar si esto está pasando, se me ha ocurrido analizar la longitud de las frases de este blog desde sus inicios y, de paso, aprovechar para hacer web scraping con la librería BeautifulSoup de Python. La idea es recorrer el blog, calcular la longitud de las frases y representar gráficamente cómo ha ido evolucionando esa longitud. ...

25 de diciembre de 2017 · rvaquerizo

Los bancos lo llaman Transformación Digital yo lo llamo me da miedo Facebook

¿Si Facebook prestara dinero? ¿Si Facebook hiciera un banco? Tiene información interesante de nosotros, variables relevantes para cualquier modelo de scoring de crédito y sabe cómo es tu comunidad de amigos cibernéticos y cuáles de ellos podrían avalarte a la hora de conceder un crédito. Además, tanto Facebook como Amazon o Wallapop tienen sus propios medios de pago, y Google no tardará en crear su propio banco. Unos están creando la economía del futuro y otros no pueden sobrevivir sin programadores en COBOL. Entiendo que se quieran transformar, aunque a lo mejor no es un tema de captar pasivo y prestar dinero; a lo mejor es un tema de relacionar los recursos de las personas.

29 de octubre de 2017 · rvaquerizo

Pasando de SAS a R. Primer y ultimo elemento de un campo agrupado de un data frame

Las personas que están acostumbradas a trabajar con SAS emplean mucho los elementos FIRST., LAST. y BY; en el blog hay ejemplos al respecto. En R podemos hacer este trabajo con la librería “estrella” dplyr de un modo relativamente sencillo. A continuación se presenta un ejemplo para entender mejor cómo funciona; creamos un conjunto de datos aleatorio: id <- rpois(100, 20) mes <- rpois(100, 3) + 1 importe <- abs(rnorm(100)) * 100 df <- data.frame(id, mes, importe) Tenemos un identificador, una variable mes y un importe y deseamos obtener el menor importe por mes. El primer paso a realizar es ordenar el data frame de R por ese identificador, el mes y el importe en orden descendente: ...

19 de octubre de 2017 · rvaquerizo

¿Puede la información de Twitter servir para calcular el precio de tu seguro?

Debemos de ir introduciendo el concepto de Social Pricing en el sector asegurador; si recordamos el año pasado, Admiral y Facebook tuvieron un tira y afloja por el uso de la información de Facebook para el ajuste de primas de riesgo. Facebook alegaba a la sección 3.15 de su privacidad para no permitir emplear esta información a Admiral. Probablemente es un tema más económico. El caso es que tanto Facebook como Instagram, Twitter, LinkedIn, xVideos… tienen información muy interesante acerca de nosotros, información que se puede emplear para el cálculo de primas en el sector asegurador (por ejemplo). ...

9 de octubre de 2017 · rvaquerizo