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 en 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». Es una programación sencilla, seguramente haya una función específica en sckitlearn para agrupar variables en base a la frecuencia, pero no la he encontrado y he tardado más en buscarla que en hacerla. ...

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 dif_mes (201812,201709) Muy sencilla, por si os surge la necesidad.

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 data set 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() Me ha parecido interesante traerlo.

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 pytho. 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 df = pd.read_csv('http://www.businessandeconomics.mq.edu.au/our_departments/Applied_Finance_and_Actuarial_Studies/acst_docs/glms_for_insurance_data/data/claimslong.csv') from statsmodels.graphics.mosaicplot import mosaic mosaic(df, ['agecat', 'valuecat']) 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 TIOBEpara 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 de empezar a trabajar con MATLAB y Python. ...

26 de septiembre de 2009 · rvaquerizo