Как отфильтровать столбцы с двоичными классами, которые ниже определенной частоты в питоне? - PullRequest
1 голос
/ 10 мая 2019

Я довольно новичок в программировании, и я уверен, что существует много решений, но на данный момент мое, похоже, не работает.У меня есть набор данных с более чем 200 переменными предикторами, и большинство из них являются двоичными 1 = событие, 0 = нет события.Я хочу отфильтровать все переменные, которые имеют частоту появления ниже определенного порога, например, в 100 раз.

Я пробовал что-то вроде этого:

diag = luisa.T.reset_index().rename(columns = {'index': 'diagnosis'}) 

frequency = pd.concat([diag.iloc[:,:1],pd.DataFrame(diag.sum(1))], axis = 1).rename(columns = {0:'count'}) 

frequency.nlargest(150,'count) 

Пожалуйста, помогите!

1 Ответ

0 голосов
/ 10 мая 2019

Вы можете взять сумму по столбцам и отфильтровать столбцы, суммы которых ниже определенного значения, учитывая, что сумма представляет общее количество событий:

threshold = 100

col_sum = df.sum()
filtered_df = df[col_sum[col_sum > threshold].index]

Это сохранит в filtered_df подмножество исходного DataFrame без этих столбцов.

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

binary_columns = df.isin([0, 1]).all(axis=0)
binary_df = df.loc[:, binary_columns]
col_sum = binary_df.sum()

filtered_df = df.drop(columns=col_sum[col_sum < threshold].index)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...