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

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

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

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

Lista de los lengajes de programación mas populares

Hacía mucho tiempo que no me daba una vuelta por TIOBE para conocer los lenguajes de programación más populares. Este estudio se realiza mensualmente y la verdad es que he encontrado pocos cambios con respecto a 2008. De los lenguajes que se tratan en este blog tenemos en el puesto 15 a SAS y en el puesto 30 a R. Vemos pocas cosas de Visual Basic y hemos rozado el PL/SQL. Debería empezar a trabajar con MATLAB y Python. ...

26 de septiembre de 2009 · rvaquerizo