Фильтр Pandas: функция DataFrame.filter () в Python

Pandas Dataframe.filter () — это встроенная функция, которая используется для подмножества столбцов или строк DataFrame в соответствии с метками в конкретном индексе. Фильтр DataFrame () возвращает подмножество строк или столбцов DataFrame в соответствии с подробными метками индекса. Следует отметить, что эта процедура не фильтрует DataFrame по его содержимому. Функция filter () применяется к меткам индекса.

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

Python Pandas позволяет нам чтобы разрезать данные разными способами. Часто вам может потребоваться подмножество фрейма данных pandas на основе одного или нескольких значений определенного столбца. Обязательно мы хотели бы выбирать строки на основе одного значения или нескольких значений, присутствующих в столбце.

Для фильтрации данных в Pandas у нас есть следующие параметры.

  1. Используйте метод Pandas filter ().
  2. Используйте функцию Pandas query ()
  3. Используйте индексы Pandas DataFrame.

 DataFrame.filter (self: ~ FrameOrSeries, items = None, например: Union [str  , NoneType] = None, regex: Union [str, NoneType] = None, axis = None) 

Параметры

items: list-like

Держите метки от оси, которые находятся в элементах.

как: str

Сохранять метки от оси, для которой «как в метке == True».

regex: str (регулярное выражение)

Сохранить метки от оси, для которой re.search (regex, label) == True.

axis: {0 или ‘index’, 1 or ‘columns’, None }, значение по умолчанию e — Нет.

Ось для фильтрации, выраженная либо как индекс (int), либо как имя оси (str ).

По умолчанию это информационная ось, «индекс» для серии, «столбцы» для DataFrame.

Пример

Давайте использовать для этого примера внешний CSV-файл. Файл, который я использую, называется файлом People.csv, и мы будем импортировать данные с помощью функции pandas read_csv ().

Затем мы создадим DataFrame из данных CSV.

В этом примере мы выбираем только первые 10 строк, поэтому я использовал функцию DataFrame.head () , чтобы ограничить количество строк до 10.

Затем мы будем использовать функцию filter () для выбора данных на основе меток.

См. Приведенный ниже код.

  # app.pyimport pandas как pddt = pd.read_csv ('people.csv') df = pd.DataFrame (data = dt) df10 = df.head (10) print (df10) 

Вывод

 python3 app.py Имя Пол Возраст Рост Вес0 Alex M 41 74 1701 Bert M 42 68 1662 Carl M 32 70 1553 Dave M 39 72 1674 Elly F 30  66 1245 Fran F 33 66 1156 Gwen F 26 64 1217 Hank M 30 71 1588 Ivan M 53 72 1759 Jake M 32 69 143 

Вы можете видеть, что у нас всего 5 столбцов и 10 строк.

Теперь мы выберем только Name, Height, и Weight с помощью метода Pandas filter ().

 # app.pyимпортируйте панды как pddt = pd.read_csv ('people.csv') df = pd.DataFrame (data = dt) df10 = df.head (10) print (df10) dFilter = df10.  filter (['Name', 'Height', 'Weight']) print (dFilter) 

Вывод

 приложение python3  .py Имя Рост Вес0 Алекс 74 1701 Берт 68 1662 Карл 70 1553 Дэйв 72 1674 Элли 66 1245 Фрэн 66 1156 Гвен 64 1217 Хэнк 71 1588 Иван 72 1759 Джейк 69 143 

Панды фильтр с регулярным выражением Python

Давайте передадим параметр регулярного выражения в функцию filter () .

Python RegEx или Регулярное выражение — это последовательность символов, образующая шаблон поиска.

Python RegEx может использоваться для проверки, содержит ли строка указанный шаблон поиска.

Давайте выберем столбцы по их имени, которые содержат ‘ A’ .

 # app.pyimport pandas as pddt = pd.read_csv ('people.csv') df = pd.DataFrame (data = dt) df10 = df.head (10)  dFilter = df10.filter (regex = '[A]') print (dFilter) 

Вывод

 python3 app.py  Age0 411 422 323 394 305 336 267 308 539 32 

Регулярное выражение ‘[A] ‘ ищет все имена столбцов, в которых есть ‘A’.

У нас есть только один столбец, содержащий A; именно поэтому он возвращает столбец «Возраст».

Pandas выбирает строки в DataFrame с помощью filter ()

Давайте выберите данные на основе индекса DataFrame.

 # app.pyimport pandas as pddt = pd.read_csv ('people.csv') df = pd.DataFrame (data = dt) df10 = df  .head (10) dFilter = df10.filter (like = '6', axis = 0) print (dFilter) 

В приведенном выше коде мы выбираем ту строку, индекс которой равен 6.

В Pandas DataFrame индекс начинается с 0. Таким образом, 6 должен быть 7-м индексом в DataFrame .

 python3 app.py Имя Пол Возраст Рост Вес 6 Гвен Ж 26 64 121 

Фильтр Pandas с использованием df.query ()

filter () — не единственная функция, которую мы можем использовать для фильтрации строк и столбцов.

Pandas DataFrame.query () — это встроенный функция, которая полезна для фильтрации строк.

См. следующий код.

 # app.pyimport pandas as pddt = pd.read_csv ('people.csv')  df = pd.D  ataFrame (data = dt) df10 = df.head (10) dFilter = df10.query ('Age> 40') print (dFilter) 

Вывод

 python3 app.py Имя Пол Возраст Рост Вес0 Alex M 41 74 1701 Bert M 42 68 1668 Ivan M 53 72 175 

В приведенном выше примере мы фильтруем строки с возрастом . Таким образом, мы получим всех людей с возрастом > 40 .

Это похоже на запрос SQL SELECT с предложением WHERE.

Pandas DataFrame фильтрует несколько столбцов

Мы можем фильтровать несколько столбцов в Pandas DataFrame с помощью оператора &, не забудьте обернуть вложенные операторы с ().

См. следующий код.

 # app.pyimport pandas as pddt = pd.read_csv ('people.csv') df  = pd.DataFrame (data = dt) df10 = df.head (10) dFilter = df10 [(df10.Age> = 40) & (df10.Sex == 'M')] print (dFilter) 

Вывод

 python3 app.py Имя Пол Возраст Рост Вес0 Alex M 41 74 1701 Bert M 42 68 1668 Ivan M 53 72 175 

В приведенном выше коде мы фильтруем данные на основе двух условий.

  1. Возраст> 40
  2. Sex == M

Если один из них равен False, он отфильтровывает эти данные.

Возвращаемые данные будут удовлетворять нашим условиям.

Заключение

Мы можем фильтровать Pandas DataFrame, используя df.filter () , df.query () и df [] индексирует метод.

Мы также можем фильтровать несколько столбцов с помощью оператора &.

См. также

Pandas переименовать столбец DataFrame

Pandas assign ()

Pandas iloc []

Pandas Pivot Table

Панды транспонировать ()

Оцените статью
nanomode.ru
Добавить комментарий