Есть ли способ удалить столбцы из pandas dataframe, повторяя при этом собственную форму dataframe? - PullRequest
0 голосов
/ 09 ноября 2019

У меня есть функция, которая получает кадр данных pandas и число с плавающей точкой между 0 и 1. Что мне нужно сделать, это вычислить корреляцию Пирсона между двумя столбцами (i, j) кадра данных попарно, и если эта корреляция достигает значениябольше 0,9, удалите один из этих столбцов (j).

Мой информационный фрейм pandas содержит 111 строк и ~ 2 миллиона столбцов. Я хочу добиться набора данных с тем же количеством строк, но с меньшим количеством столбцов. В другом наборе данных с формой 2278x111 я смог получить новые данные с формой 512x111. Все данные - float64.

def apply_pearson_feature_selection(samples, max_value=0.99):
    # https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.pearsonr.html
    columns_names = samples.columns
    features_to_delete = []
    for i in range(0, samples.shape[1]):
        feature_i = samples[columns_names[i]].to_numpy()
        for j in range(i+1, samples.shape[1]):
            feature_j = samples[columns_names[j]].to_numpy()
            pearson, pvalue = stats.pearsonr(feature_i, feature_j)
            if pearson > max_value and columns_names[j] not in features_to_delete:
                features_to_delete.append(columns_names[j])

    return samples.drop(features_to_delete, axis=1).values

Проблема в том, что это занимает слишком много времени ... у кадра данных, который я пытаюсь применить, есть ~ 2 миллиона функций.

Так как я неВ любом случае, я не знаю, как удалить столбцы, итерируя по ним, я понятия не имею, как это сделать лучше

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...