Данные orderslog находятся в DataFrame df.
Pandas: фильтрация заказов и группировка по диапазонам выручки
Данные orderslog находятся в DataFrame df.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Данные orders_log находятся в DataFrame df.
- Вывести строки, где статус
processing, выручкаrevenue > 50000и приоритетhigh. - Создать
revenue_group: Small при выручке < 50000, Medium при 50000 ≤ выручка < 90000, Large при выручке ≥ 90000. Посчитать число заказов поCategoryи группе выручки.
Решение
Предполагается, что выручка уже числовая, а статус хранится в state, как в исходном примере.
mask = (
(df["state"] == "processing")
& (df["revenue"] > 50000)
& (df["priority"] == "high")
)
print(df.loc[mask.fillna(False)])
# Вторая задача использует исходный df, а не отфильтрованные строки.
df["revenue_group"] = "Unknown"
revenue = df["revenue"]
df.loc[(revenue < 50000).fillna(False), "revenue_group"] = "Small"
df.loc[
((revenue >= 50000) & (revenue < 90000)).fillna(False),
"revenue_group",
] = "Medium"
df.loc[(revenue >= 90000).fillna(False), "revenue_group"] = "Large"
result = (
df.groupby(["Category", "revenue_group"], observed=True, dropna=False)
.size()
.reset_index(name="order_count")
)
print(result)
size() считает строки, включая заказы с пропусками в других полях. Неизвестная выручка остаётся в отдельной группе Unknown; dropna=False сохраняет и заказы без категории. Граничные значения 50000 и 90000 относятся соответственно к Medium и Large.