#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. фантастика, я скоро попробую это сделать