Contando valores no cero en cada columna de un dataframe en python

Tengo un dataframe de python-pandas en el que la primera columna es user_id y el rest de las columnas son tags (tag_0 a tag_122). Tengo los datos en el siguiente formato:

UserId Tag_0 Tag_1 7867688 0 5 7867688 0 3 7867688 3 0 7867688 3.5 3.5 7867688 4 4 7867688 3.5 0 

Mi objective es lograr Sum(Tag)/Count(NonZero(Tags)) para cada user_id

df.groupby('user_id').sum() , me da sum(tag) , sin embargo no tengo idea de contar valores no cero

¿Es posible lograr Sum(Tag)/Count(NonZero(Tags)) en un comando?

En MySQL pude lograr esto de la siguiente manera:

 select user_id, sum(tag)/count(nullif(tag,0)) from table group by 1 

Cualquier ayuda será apreciada.

Mi forma favorita de obtener el número de no ceros en cada columna es

 df.astype(bool).sum(axis=0) 

Para el número de no ceros en cada fila use

 df.astype(bool).sum(axis=1) 

(Gracias a Skulas)

Si tiene nans en su df, debe hacer estos cero primero, de lo contrario se contarán como 1.

 df.fillna(0).astype(bool).sum(axis=1) 

(Gracias a SirC)

Para contar valores distintos de cero, simplemente haga (column!=0).sum() , donde column es la información para la que desea hacerlo. column != 0 devuelve una matriz booleana, y True es 1 y False es 0, por lo que sumr esto le da el número de elementos que coinciden con la condición.

Así que para obtener el resultado deseado, haz

 df.groupby('user_id').apply(lambda column: column.sum()/(column != 0).sum())