def unskew(x, info = False):
    def show(q, df):
        if q == 0: return (df, "normal")
        elif q == 1: return (sqrt(df), "sqrt")
        else: return (boxcox(df)[0], "boxcox")
    original = copy(x)
    df = topositive(conts(x))
    skews = np.abs(skew(df))
    sqrted = sqrt(df)
    boxcoxed = boxcox(df)[0]
    comp = hcat(skew(df),skew(sqrted),skew(boxcoxed));    comp.columns = ["norm","sqrt","box"]
    res = np.abs(comp.T)
    r = []; out = []
    for col in res:
        p = 0
        for i in res[col]:
            if i == np.min(res[col]):
                f = show(p, df[col]); r.append(f[1]); out.append(f[0]); break
            else: p += 1
    first = out[0]
    for c in out[1:]: first = hcat(first, c)