Удалите строки, в которых содержится определенное количество NA

#python #pandas #dataframe

Вопрос:

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

 step1 step2 step3 step4 ..... stepn-1 stepn session_id   1 page_id page_id NA NA NA NA  2 page_id NA NA NA NA NA  3 page_id page_id page_id page_id page_id page_id  4 page_id page_id page_id NA NA NA    

Для контекста page_id это некоторая подстрока URL-адреса, а шаги указывают путь пользователя по отслеживаемым веб — страницам

У некоторых людей шаги странно большие, возможно, более 1000 страниц, что, на мой взгляд, очень и очень необычно по сравнению со средним показателем

Что я хочу сделать, так это найти средние шаги, которые есть у каждого сеанса (шаги, отличные от NA).

Таким образом, в приведенном выше примере, если мы исключим страницу 3, которую мы определим как выброс, средние шаги будут (2 1 4 3)/4 = 10/4

Как только у меня будет среднее значение, я получу представление о том, какие строки я могу исключить, чтобы таблица стала более управляемой.

Так что в целом

Найдите средние шаги (без nas) и используйте это число для удаления строк, содержащих больше средних строк

Комментарии:

1. вы можете проверить 2 1 4 3 ==8 ?

2. ой, лол, там

3. если мы исключим страницу 3 , что page 3 здесь?

Ответ №1:

Вы можете рассчитать количество не NAN с notna sum и получить mean . Наконец, используйте dropna это среднее значение в качестве порогового значения:

 avg = df.notna().sum(axis=1).mean() df.dropna(thresh=avg)  

выход:

 step1 step2 step3 step4 stepn-1 stepn session_id  3 page_id page_id page_id page_id page_id page_id 4 page_id page_id page_id NaN NaN NaN  

Комментарии:

1. фантастика, я скоро попробую это сделать