Implement profile(df) returning a DataFrame with one row per column of df (in the original order, indexed by column name) and these columns:
dtype: the pandas dtype as a stringmissing_pct: percentage of missing values, rounded to 1 decimaln_unique: number of distinct non-missing valuestop: the most frequent non-missing value (ties to the value that sorts first as a string), or None if the column is empty