DevGang
Авторизоваться

Как отфильтровать датафрейм Pandas за 3 минуты

В Pandas есть много способов отфильтровать DataFrame. Я познакомлю вас с наиболее важными вариантами с помощью Симпсонов.

Логическое индексирование

Логическое индексирование требует поиска истинных значений для каждой строки. Если вы ищете df['column'] == 'XY', создается True / False Series.

Представьте себе, что вы только что были на съемочной площадке с Симпсонами. Они звезды, и каждому из них разрешено заказать несколько вещей на следующий сезон, которые оплачиваются производителями. Ваша задача - принять заказы главных героев и отправить соответствующие данные:

df = pd.DataFrame({'Items': 'Car Saxophone Curler Car Slingshot Duff'.split(),
 'Customer': 'Homer Lisa Marge Lisa Bart Homer'.split(),
 'Amount': np.arange(6), 'Costs': np.arange(6) * 2})
print(df)
       Items Customer  Amount  Costs
0        Car    Homer       0      0
1  Saxophone     Lisa       1      2
2     Curler    Marge       2      4
3        Car     Lisa       3      6
4  Slingshot     Bart       4      8
5       Duff    Homer       5     10

Пример 1. Выбор строк с определенным значением.

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

df.loc[df['Customer'] == 'Bart']
   Items         Customer   Amount Costs
4  Slingshot     Bart       4      8

Пример 2 - выбор строк из списка

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

kids = ['Lisa','Bart']
df.loc[df['Customer'].isin(kids)]
       Items     Customer   Amount Costs
1  Saxophone     Lisa       1      2
3        Car     Lisa       3      6
4  Slingshot     Bart       4      8

Мы увидим саксофон, автомобили и рогатки в телевизионной рекламе...

Пример 3 - Объединение нескольких условий

Также Симпсоны должны экономить деньги. Новые правила:

1) нет автомобилей 

2) можно заказывать не более 3 предметов на человека

df.loc[(df['Items'] != 'Car') & (df['Amount'] <= 3)]
       Items Customer  Amount  Costs
1  Saxophone     Lisa       1      2
2     Curler    Marge       2      4

Я надеюсь, что Гомер и Барт останутся с нами и не покинут шоу в ярости…

Пример 4 - Выбрать все строки, которые не отображаются в списке

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

happy_stars = ['Lisa','Marge']
df.loc[~df['Customer'].isin(happy_stars)]
Items     Customer   Amount Costs
1  Saxophone     Lisa       1      2
3        Car     Lisa       3      6
4  Slingshot     Bart       4      8

Позиционная индексация

Иногда вы не хотите фильтровать в соответствии с определенным условием, но выбираете определенные строки DataFrame в зависимости от их положения. В этом случае мы используем нарезку, чтобы получить нужные строки.

Пример 1 - Выберите первые строки кадра данных

Новый стажер в вашем отделе не должен работать напрямую со всем набором данных, ему нужны только первые три записи:

df.iloc[0:3]
         
       Items Customer  Amount  Costs
0        Car    Homer       0      0
1  Saxophone     Lisa       1      2
2     Curler    Marge       2      4

Пример 2 - Выберите последние строки кадра данных

У вас много работы, и вы получите другого стажера. Чтобы оба слушателя работали над своими задачами независимо, теперь вы сохраняете последние три строки записи:

df.iloc[-3:]
         
       Items Customer  Amount  Costs
3        Car     Lisa       3      6
4  Slingshot     Bart       4      8
5       Duff    Homer       5     10

Вывод

Мы можем выбрать любую конкретную строку из нашего набора данных в соответствии с ее значениями или положением. Pandas предлагает простые способы учета нескольких значений при формулировании условия. Списки и условия могут быть легко связаны друг с другом.

Источник:

#Python #Pandas
Комментарии
Чтобы оставить комментарий, необходимо авторизоваться

Присоединяйся в тусовку

В этом месте могла бы быть ваша реклама

Разместить рекламу