Pandas — фильтр по дате

Тип столбца Pandas для строки Программирование и разработка

Формат дат различается в разных регионах (ДД/ММ/ГГ, ГГГГ-ММ-ДД, ГГГГ-ДД-ММ и т. д.). Работа со значениями строки даты в наборе данных является сложной задачей. Время и дату в строковом формате можно преобразовать в datetime64 с помощью метода Pandas to_datetime(). Этот тип данных позволяет нам извлекать характеристики времени и даты в диапазоне от «микросекунд» до «года». Сначала преобразуйте значения даты в данном DataFrame в тип datetime64, прежде чем фильтровать строки на основе дат. Затем определите условие фильтра, используя функции DataFrame.loc и DataFrame.query пакета Pandas. Получите отфильтрованный DataFrame, который является подмножеством данных.

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

В следующих примерах мы будем использовать различные методы для фильтрации столбцов DataFrame по значениям даты. Перед фильтрацией данных даты должны быть преобразованы в тип данных «datetime64».

Пример 1. Извлечение данных с помощью функции DataFrame.loc[] на основе значений даты

Используя имена столбцов или логический массив, функцию loc[] можно использовать для извлечения группы столбцов и строк в DataFrame. Массив (логическое значение) со значением True, если строка соответствует требованию, и значением False во всех остальных случаях возвращается условным выражением в методе loc[]. Функция loc[] возвращает только строки со значениями True. Чтобы создать наш DataFrame, мы используем функцию pd.DataFrame(). Сначала необходимо импортировать библиотеку Pandas.

Используя имена столбцов или логический массив, функцию loc

Мы передали словарь Python внутри функции pd.DataFrame(), чтобы создать наш DataFrame «df». Давайте распечатаем его, чтобы визуализировать его содержимое.

Мы передали словарь Python внутри функции

В предыдущем DataFrame есть два столбца «name» и «posting_date». Колонка «имя» состоит из имен сотрудников какой-либо компании («Лео», «Брюс», «Роберт», «Клэй», «Мартин», «Генри», «Лана», «Бекки», «Алекса»)., «Дастин»). Столбец «posting_date» содержит запись даты размещения каждого сотрудника («2022-08-01», «2022-08-20», «2022-09-05», «2022-09-25», «2022 −09-30», «2022-10-10», «2022-11-10», «2022-12-01», «2022-12-10», «2022-12-30»). Давайте проверим типы данных столбцов в DataFrame «df», используя атрибут dtypes.

Читайте также:  Как добавить строку в список Python

Можно заметить, что текущим типом данных столбцов

Можно заметить, что текущим типом данных столбцов «posting_date» является «object». Чтобы отфильтровать данные на основе значений даты, мы преобразуем их в «datetime64».

Можно заметить, что текущим типом данных столбцов «posting_date»

Чтобы преобразовать тип данных в datetime64, мы использовали функцию pd.datetime() и передали столбец «posting_date» в качестве аргумента внутри функции. Формат указан. Теперь тип данных столбца со значениями даты изменен на «timedate64». Опять же, вы можете использовать атрибут dtypes для определения типа данных столбцов.

Тип данных posting_date изменен с объекта на datetime64. Поскольку теперь тип данных изменен, мы можем использовать нашу функцию loc[] с условиями внутри нее для фильтрации строк.

Тип данных posting_date изменен с объекта на datetime64

Мы применили два условия внутри функции loc[] для извлечения строк из DataFrame, где дата в «posting_date» равна или больше «22-09-05», а значение «posting_date» меньше 22- 12-01.

Мы применили два условия внутри функции loc[] для извлечения строк

Предыдущие строки DataFrame соответствуют условиям внутри функции loc[].

Пример 2. Извлечение данных с использованием DateTimeIndex(dt) в функции DataFrame.loc[]

Несколько свойств могут быть возвращены с помощью dt для получения значений серии в виде значений, подобных дате и времени. Например, атрибут «Series.dt.date» возвращает массив даты и времени Python NumPy. Давайте создадим еще один DataFrame для этого примера.

Несколько свойств могут быть возвращены с помощью dt

DataFrame создается с использованием словарной части функции pd.DataFrame().

DataFrame создается с использованием словарной части

Столбец «дата» в нашем DataFrame состоит из значений даты в виде строк («2021-06-09», «2021-06-25», «2021-07-05», «2021-07-12», «2021 −08-29», «2021-09-15», «2021-10-21», «2021-11-02», «2021-11-10», «2021-11-18»). Теперь мы проверяем тип данных DataFrame с помощью атрибута dtypes.

Столбец «дата» в нашем DataFrame состоит из значений

Тип данных столбцов «задача» и «дата» — int64 и объект соответственно. Мы меняем столбец «дата» на тип данных «datetime64». Чтобы изменить его тип данных, мы используем функцию to_datetime().

Тип данных столбцов «задача» и «дата»

Теперь мы можем фильтровать данные с помощью метода loc[]. Во-первых, мы фильтруем данные без использования атрибута dt для фильтрации данных по определенным датам.

Теперь мы можем фильтровать данные с помощью метода loc[]

Предыдущий скрипт извлекает строки с датами между ноябрем, поскольку указано условие, что дата должна быть равна или больше 01.11.2021 и меньше 30.11.2021.

Предыдущий скрипт извлекает строки с датами между ноябрем

Мы также можем получить строки с определенными датами или временем, используя атрибут dt. Предположим, что мы получаем строку для определенного дня недели. Индексация дней недели начинается с 1 до 7, где 1 — понедельник, а 7 — воскресенье. Если мы указываем понедельник, мы используем значение индекса 1.

Мы также можем получить строки с определенными датами или временем

Пример 3. Извлечение данных с помощью функции.Query[] на основе значений даты

Метод query() также можно использовать для фильтрации данных на основе значений даты из DataFrame. Вы можете запросить DataFrame, используя метод query(). Выражение запроса передается в качестве входной строки методу query() и должно возвращать значение True или False. DataFrame возвращается, когда вывод равен True оператором запроса. Давайте создадим DataFrame, в котором мы используем функцию query() для фильтрации данных.

Метод query() также можно использовать для фильтрации данных

Теперь давайте изменим тип данных столбца «прибытие» на datetime64, используя функцию to_datetime().

Теперь давайте изменим тип данных столбца «прибытие»

Используя атрибут dtypes, давайте проверим, изменился ли тип данных столбца «прибытие» на datetime64 или нет.

Используя атрибут dtypes, давайте проверим, изменился

 

При изменении типа данных мы используем функцию query() для фильтрации данных из DataFrame «df».

При изменении типа данных мы используем функцию query()

Вы можете заметить, что условие внутри функции query() передается в виде строки, то есть «прибытие >= ’2022-02-05′ и прибытие < ’2022-05-15’». Функция возвращает строки, в которых значения дат в столбце «прибытие» равны или больше 05.02.2022 и меньше 15.05.2022.

Вы можете заметить, что условие внутри функции query() передается

Предыдущие строки из DataFrame «df» удовлетворяют условию внутри функции query().

Пример 4. Фильтрация строк между двумя датами с помощью функции Isin()

Метод isin() помогает получить строки с одним (или несколькими) значениями в определенном столбце. Метод «pandas.DataFrame.isin()» возвращает Dataframe логических значений, которые указывают, включен ли элемент в заданный диапазон. Этот метод позволяет нам фильтровать строки DataFrame в Pandas по дате. Теперь мы создаем новый образец DataFrame, чтобы продемонстрировать использование функции isin() для фильтрации строк после импорта модулей Pandas и NumPy.

Метод isin() помогает получить строки с одним (или несколькими)

Когда мы создали наш DataFrame, мы теперь меняем тип данных столбца «дата» на datetime64, как мы делали в предыдущих примерах.

Когда мы создали наш DataFrame, мы теперь меняем тип данных столбца

После изменения типа данных на datetime 64 мы фильтруем строки, используя строки из «df» DataFrame, используя функцию isin().

После изменения типа данных на datetime 64 мы фильтруем строки

Мы передали функцию pd.date_range() вместе с функцией isin(). Мы указали начальный параметр date_range() как 2021-12-01 и конечный параметр как 2022-02-01. Предыдущий код возвращает строки из DataFrame, которые находятся в пределах диапазона.

Мы передали функцию pd.date_range() вместе с функцией isin()

Заключение

В этом уроке мы попытались научить вас фильтровать строки по значениям даты. Мы узнали, что мы преобразуем значения даты в данном DataFrame в тип datetime64 перед фильтрацией строк на основе дат. В этой статье мы реализовали несколько примеров, чтобы научить вас использовать функцию DataFrame.loc[], функцию.query[] и функцию isin() для фильтрации данных по датам в Pandas. Теперь, пройдя этот урок, вы сможете самостоятельно фильтровать строки.

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

  1. Scream

    Не работает такой код. Ошибка freq not specified and cannot be inferred.

    Ответить