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

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

Diagramas de Voronoi con spatial de python

En breve «mis cachorros», como llamo a un grupo de los mejores Data Scientists de Europa (de los que tengo que hablar algún día), se van a enfrentar a un problema que probablemente tengan que resolver con análisis geométricos muy complejos. Para despertarles la curiosidad (sé que me leen), hoy traigo al blog una entrada que nos aproxima al método de interpolación geométrica más sencillo: al diagrama de Voronoi. Con scipy.spatial (https://docs.scipy.org/doc/scipy-0.18.1/reference/generated/scipy.spatial.Voronoi.html), podemos trabajar con estos diagramas: ...

8 de diciembre de 2017 · rvaquerizo

Preparar nuestros datos para sklearn. Pasar de string a número

Cuando trabajamos con Python y scikit-learn necesitamos que todos los datos que vamos a modelizar sean numéricos; si tenemos variables carácter, necesitamos previamente transformarlas a números. La forma más rápida para realizar esta tarea es emplear preprocessing de scikit-learn: import pandas as pd dias_dict = {'dia': ['lunes', 'martes', 'viernes', 'miercoles', 'jueves', 'martes', 'miercoles', 'jueves', 'lunes']} dias_df = pd.DataFrame(dias_dict) dias_df Creamos un data frame a partir de un diccionario que se compone de los días de la semana; ahora vamos a codificar las etiquetas con el LabelEncoder de scikit-learn: ...

24 de octubre de 2017 · rvaquerizo

Truco Python. Reemplazar una cadena de caracteres en los nombres de las columnas de un data frame

Más largo el título de la entrada que la entrada en sí misma. Tenemos un conjunto de datos que os podéis descargar de este link que ya es conocido. Os descargáis los datos y creamos un data frame que tiene 10.000 registros y 251 columnas; casi todas se llaman attx y queremos cambiar el nombre a columna_x. Mi sugerencia para hacerlo vía pandas en Python es: import pandas as pd df = pd.read_csv('C:\\temp\\wordpress\\au2_10000.csv') df.head() # Reemplazamos 'att' por 'columna_' en los nombres de las columnas df.columns = df.columns.str.replace('att', 'columna_') df.head() Espero que sea de utilidad. Saludos.

22 de julio de 2017 · rvaquerizo

Gráfico de barras y líneas con Python

Típico gráfico de dos ejes de barras y líneas donde las barras miden una exposición y las líneas una frecuencia; en el mundo actuarial son muy habituales y son muy útiles para ver proporciones dentro de grupos a la vez que representamos el tamaño del grupo. Los datos habituales del curso de GLM for insurance data: import pandas as pd import io import requests # Lectura de un dataset con número de siniestros de una cartera de automóviles url = 'http://www.businessandeconomics.mq.edu.au/our_departments/Applied_Finance_and_Actuarial_Studies/acst_docs/glms_for_insurance_data/data/claimslong.csv' s = requests.get(url).content df = pd.read_csv(io.StringIO(s.decode('utf-8'))) df.head() Ya tenemos un data.frame con nuestros datos leyendo directamente del CSV; ahora preparamos los datos para representarlos: ...

9 de julio de 2017 · rvaquerizo

Machine learning. Elegir el mejor Gradient Boost de forma iterativa con GridSearchCV

Carlos [aka «el tete»] me está enseñando Python y una de las cosas que me ha enseñado es seleccionar de forma iterativa el mejor modelo con GridSearchCV y, por si fuera poco, vamos a emplear el método de clasificación «gradient boosting» para que no caiga in desuso, sobre todo porque es una técnica que, bajo mi punto de vista, ofrece modelos muy estables. El ejemplo para ilustrar el proceso ya es conocido, ya que vamos a estimar la letra O (mi talento no da para mucho más). Recordamos los primeros pasos: ...

19 de junio de 2017 · rvaquerizo

Truco Python. Largo de una variable numérica

Hoy he tenido que determinar la longitud de una variable numérica de un data frame en Python y, tras pegarme unos minutos con len(), he encontrado la fórmula con str.len(). El ejemplo es: df['largo_numero'] = df['variable_numerica'].astype(str).str.len() Previamente transformamos a str mediante astype(str) y posteriormente aplicamos la función len. Me ha parecido interesante traerlo. Saludos.

8 de junio de 2017 · rvaquerizo

Mosaic plot con Python

Entrada análoga a otra realizada con R hace mucho tiempo empleando R; ahora realizo esta tarea con Python. Estos gráficos van a ser necesarios para un fregado en el que ando metido ahora y, como podéis ver, es una tarea muy sencilla: import pandas as pd import matplotlib.pyplot as plt from statsmodels.graphics.mosaicplot import mosaic url = 'http://www.businessandeconomics.mq.edu.au/our_departments/Applied_Finance_and_Actuarial_Studies/acst_docs/glms_for_insurance_data/data/claimslong.csv' df = pd.read_csv(url) mosaic(df, ['agecat', 'valuecat']) plt.show() Y da como resultado: Saludos.

27 de mayo de 2017 · rvaquerizo

Machine learning. Análisis gráfico del funcionamiento de algunos algoritmos de clasificacion

De forma gráfica os voy a presentar algunas técnicas de clasificación supervisada de las más empleadas in Machine Learning y podremos ver cómo se comportan de forma gráfica en el plano. Como siempre, prefiero ilustrarlo a entrar in temas teóricos y, para esta tarea, se me ha ocurrido pintar una letra O y comenzar a trabajar con Python, así de simple. Lo primero es tener los datos; evidentemente serán puntos aleatorios en el plano donde pintamos una variable dependiente con forma de O: ...

3 de mayo de 2017 · rvaquerizo