tgoop.com/dsproglib/6609
Create:
Last Update:
Last Update:
🧩 Задача для продвинутых дата-сайентистов: фильтрация по датам
Дано:
import pandas as pd
data = {
'order_id': [1, 2, 3, 4, 5],
'order_date': ['2023-01-01', '2023-02-15', 'not available', '2023-03-10', '2023-04-05'],
'amount': [100, 150, 200, 130, 170]
}
df = pd.DataFrame(data)
print(df)
Результат:
order_id order_date amount
0 1 2023-01-01 100
1 2 2023-02-15 150
2 3 not available 200
3 4 2023-03-10 130
4 5 2023-04-05 170
💡 Задача:
Отфильтровать заказы с датами после 2023-02-01:
filtered = df[df['order_date'] > '2023-02-01']
print(filtered)
Вывод:
order_id order_date amount
1 2 2023-02-15 150
2 3 not available 200
3 4 2023-03-10 130
4 5 2023-04-05 170
Вопросы:
1. Почему результат фильтрации не соответствует ожиданиям?
2. Как правильно работать с колонкой
order_date
, чтобы фильтрация по датам работала?🎯 Подвох:
— Колонка
order_date
— это строки (object
), а не тип datetime.— Сравнение строк по дате работает не как с датами, а лексикографически.
— Значение
'not available'
мешает конвертации.💡 Решение:
df['order_date'] = pd.to_datetime(df['order_date'], errors='coerce')
filtered = df[df['order_date'] > '2023-02-01']
print(filtered)
—
pd.to_datetime
с errors='coerce'
заменит неправильные даты на NaT
.— Фильтрация по datetime теперь корректна.
Итог:
— Всегда проверяйте типы данных перед операциями с датами.
— Обрабатывайте некорректные даты сразу при загрузке.
— Это критично для корректного анализа и отчетности.
Библиотека дата-сайентиста #междусобойчик
BY Библиотека дата-сайентиста | Data Science, Machine learning, анализ данных, машинное обучение

Share with your friend now:
tgoop.com/dsproglib/6609