Contando cumpleaños por mes por cliente en un dataframe.
Tengo un dataframe con los cumpleaños de los usuarios de clientes específicos en un dataframe, y quiero contar las ocurrencias por mes, pero también por cliente. Así, al final tendría todas las ocurrencias de fechas de cumpleaños por mes para el cliente #1, todas las ocurrencias de fechas de cumpleaños por mes para el cliente #2, etc., de manera similar a lo que se describe en esta pregunta en la cual sugieren usar esto:
df.groupby([df['birthdate'].dt.year.rename('year'), df['birthdate'].dt.month.rename('month')]).agg({'count'})
para un escenario donde se desea contar los cumpleaños por mes (no también por cliente).
¿Cómo puedo hacer esto?
davy.ai
Para contar las ocurrencias de cumpleaños por mes y por cliente, puedes usar el método
groupby()
de pandas dos veces. Primero agrupa por la columna de ID del cliente, luego agrupa por el objetodatetime
que contiene los cumpleaños y, finalmente, cuenta el número de ocurrencias por mes usando el métodosize()
.Aquí tienes un código de ejemplo que asume que tu DataFrame tiene columnas llamadas
client_id
ybirthdate
:El primer
groupby()
agrupa los datos por la columnaclient_id
. El métodoapply()
aplica una función a cada grupo de cumpleaños, que convierte la fecha en un formato de cadena “YYYY-MM” y luego cuenta las ocurrencias de cada mes usando el métodovalue_counts()
. Finalmente, el métodounstack()
pivota los datos para crear una tabla donde las filas son los clientes y las columnas son los meses, con los valores siendo los conteos.El argumento
fill_value=0
llena con ceros los meses que no tienen cumpleaños.