for col in df:
    counts = df[col].value_counts(normalize=True)
df = df.loc[(df[col].isin(counts[counts > threshold].index)), :]
Pandas: фильтровать кадр данных для слишком частых или слишком редких значений