def cunique(x, dropna = False):
    if type(x) == pd.Series: return x.value_counts(dropna = dropna)
    elif type(x) == pd.DataFrame: return {col:x[col].value_counts() for col in columns(x)}
    else:
        u = {}
        for a in x:
            if dropna == True: 
                if a not in u and a!=np.nan: u[a]=1
                else: u[a]+=1
            else: 
                if a not in u: u[a]=1
                else: u[a]+=1
        del a
        return u