Классификация данных по нескольким условиям. (Python)

Всем привет! Просьба помочь/ направить в какую сторону думать со следующей задачей: У меня есть исходные данные с геокординатами заказов и суммой заказов, их обычно более 20 тыс строк. Я пытаюсь распределить эти заказы между "Пунктами выдачи" по нескольким условиям.

df с исходными данными:

Датафрейм исходной таблицы

Условие 1 - Адреса заказов должны относиться к ближайшему "Пункту выдачи". Тут были рассмотрены различные алгоритмы классификации, но остановился на простом варианте - расчет наименьшего расстояния между адресом заказа и "Пунктом выдачи". Думаю эта задача выполнена), в итоге получил распределение заказов: Распределение заказов между "Пунктами выдачи"

В df с расстояниями я нахожу ближайший "Пункт выдачи" и добавляю в сходный df.

df с расчетом расстояний по каждому заказу:

Расчет расстояний

и вывожу это на карту:

Координаты заказов на карте

Условие 2 - У нас есть 5 пунктов выдачи, и нам нужно что бы количество заказов распределилось по определенном условиям:

  • "Пункт выдачи А" - должен получить 30% заказов.
  • "Пункт выдачи Г" - должен получить 25% заказов.
  • и т.д. распределение 100% заказов по 5 "Пунктам выдачи"

И вот тут я сломался(( тут вроде что то с сортировкой делать надо, но как пройти матрицу с подсчетом количества для каждого "Пункта выдачи" непонятно, можно предположить что надо выбрать "Пункт выдачи" с наименьшим кол-вом заказов и вначале для него найти точки заказов, а оставшиеся точки заказов добавить к оставшимся заказов и снова пройтись уже для следующего "Пункта выдачи". Но тут может произойти такой момент, что доставки которые были бы ближе к пункту выдачи Н, оказались в пункте выдачи Р, лишь потому, что он был по очереди прохода первее.

Условие 3 -если вообще это возможно) по аналогии с "Условием 2", при распределении заказов, учитывать и "Сумму заказов", например, что б для пункта выдачи А было не больше 15% заказов и не больше 400 тыс.

Буду очень благодарен за за любую помощь! Спасибо!


Ответы (0 шт):