def fsort(x, by = None, keep = False, asc = True, ascending = True, des = False, descending = False):
    if type(x)==pd.Series: x = table(x); x = reset(x, column = True, string = True); by = columns(x)[0];
    if type(by)==list: by = by[0]
    if type(x) == list:
        from collections import Counter
        c = copy(x)
        if asc == ascending == True and des == descending == False: c.sort(key=Counter(sort(c, asc = True)).get, reverse = True); return c
        else: c.sort(key=Counter(sort(c, asc = False)).get, reverse = False); return c
    elif by is None: print("Please specify column to sort by: fsort(x, by = 'Name')")
    else:
        f = by; fg = reset(table(x[f].value_counts()))
        ff = f+"_Freq"; fg.columns = [f,ff]
        del ff
        try: fg[f+"_Length"] = fg[f].str.len()
        except: fg[f+"_Length"] = fg[f]