@staticmethod
def prune_by_missing_percent(df, percentage=0.4):
    """
        The method to remove the attributes (genes) with more than a percentage of missing values

        :param df: the dataframe containing the attributes to be pruned
        :param percentage: the percentage threshold (0.4 by default)
        :return: the pruned dataframe
        """
    mask = (df.isnull().sum() / df.shape[0]).map(lambda x: True if x <
        percentage else False)
    pruned_df = df[df.columns[mask.values]]
    return pruned_df
