Фильтруйте ряды Панд на основе итогов .sum () - PullRequest
0 голосов
/ 12 июня 2018

У меня есть данные, которые содержат строку для каждого пользователя, затем множество столбцов, заполненных 1 или 0 на основе их взаимодействия с определенной категорией продукта.

Я выполняю некоторый корреляционный анализ, и яЯ хотел бы удалить менее значимые категории, чтобы облегчить чтение моего анализа. Я использовал .sum() на своем фрейме данных, чтобы увидеть категории, с которыми больше всего взаимодействует, но как теперь я могу запустить корреляцию только для этого набора?

Вот образец из моего .sum():

shoes_and_flats                                                                                           37
nightwear_and_slippers                                                                                    61
shorts_and_shorts                                                                                         23
accessories_and_fragrance                                                                                 25
jackets_and_coats_and_wool                                                                                12
dresses_and_skirts_and_sleeveless_dresses                                                                 35
swimwear_and_bikinis                                                                                      49
dresses_and_skirts_and_floral_dresses                                                                      7
jackets_and_coats_and_harrington_jackets                                                                  18
dresses_and_skirts_and_tunic_dresses                                                                       8
sports_performance_tops_and_vests                                                                          4
jeans_and_bootcut_jeans                                                                                    2
nightwear_and_nightwear                                                                                    1

Создано в результате ...

totals = df.sum()

Я решил, чтоЯ хотел бы удалить категории с менее чем 50 взаимодействиями, поэтому я использовал ... totals = totals[1: -1].sort_values() > 50

Но это возвращает все категории независимо от их значения True или False.

Моя конечная цель - использовать .corr() для данных, как я могу выполнить это и вернуть только сетку, в которой категории имеют более 50 взаимодействий?

Ответы [ 2 ]

0 голосов
/ 12 июня 2018

Полагаю, вы могли бы использовать:

totals = totals[totals > 50]

Редактировать: Синтаксис принятого ответа выше не работал для меня, поэтому на случай, если это случится с кем-то еще, вот что я нашел сработавшим

totals = df.sum()
totals = totals[totals > 50]
df_more_than_50 = df.filter(totals.index))
0 голосов
/ 12 июня 2018

Вы хотите отфильтровать столбцы в кадре данных.Вы на правильном пути с результатами True и False, вам просто нужно использовать это в качестве фильтра

Если предположить, что данные находятся в кадре данных с именем df, это вернет толькостолбцы, которые вы хотите:

totals = df.sum()
df[totals[totals > 50].index]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...