Сложная операция Polars с использованием подзапросов и первых попаданий порогаPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Сложная операция Polars с использованием подзапросов и первых попаданий порога

Сообщение Anonymous »

Код: Выделить всё

df_original
представляет инспектора по мороженому на станциях A и B:

Код: Выделить всё

df_original = pl.DataFrame(
{
"station": ["A", "A", "A", "A", "B", "B", "B", "B"],
"ice_cream_date": [1, 2, 3, 4, 1, 2, 3, 4],
"customers": [10, 20, 30, 5, 5, 7, 4, 10],
"event": [0, 1, 0, 1, 1, 0, 1, 0],
}
)
  • Код: Выделить всё

    ice_cream_date
    — закодированная дата.
  • Код: Выделить всё

    customers
    представляет количество клиентов
  • представляет собой двоичную кодировку, в которой находится инспектор

Код: Выделить всё

df_evnets
— это событие == 1 в df_original:

Код: Выделить всё

df_events =  pl.DataFrame(
{
"events": [1, 1, 1, 1],
"ice_cream_date": [2, 4, 1, 3],
"station": ["A", "A", "B", "B"],
"customers": [20, 5, 5, 4],
"evaluation_span": [10, 2, 2, 2],
"evaluation_end_date": [4, 4, 3, 4],
"evaluation_end_date_customer": [5, 5, 4, 10],
"good_customer": [30, 10, 8, 12],
"bad_customer": [5, 0, 4, 3],
}
)
  • Код: Выделить всё

    evaluation_span
    — количество дней после даты проверки.
  • Код: Выделить всё

    evaluation_end_date
    — последний день проверки. (если date+evaluation_span > максимальная доступная дата, Assessment_end_date — это максимальная доступная дата.)
  • Код: Выделить всё

    evaluation_end_date_customer
    — количество клиентов на дату Assessment_end_date в df_original
  • Код: Выделить всё

    good_customer
    — это хороший порог, по которому инспектор может дать станции оценку «хорошо» в конкретную дату Ice_cream_date
  • Код: Выделить всё

    bad_customer
    : плохой порог
Борюсь с:
Я хочу отметить, есть ли станция присваивается хороший или плохой рейтинг для каждого ненулевого события.
Если инспектор видит, что количество клиентов превышает (опускается ниже) хорошее( сначала пороговое значение «плохо»), станции будет присвоена оценка «хорошо» или «плохо» независимо от продолжительности события
Ожидаемый результат:

Код: Выделить всё

shape: (4, 7)
┌────────────────┬─────────┬────────────────────┬──────┬─────┬────────────────┬────────────────────┐
│ ice_cream_date ┆ station ┆ evaluation_custome ┆ good ┆ bad ┆ evaluation_end ┆ actual_evaluation_ │
│ ---            ┆ ---     ┆ rs                 ┆ ---  ┆ --- ┆ ---            ┆ end_date           │
│ i64            ┆ str     ┆ ---                ┆ i64  ┆ i64 ┆ i64            ┆ ---                │
│                ┆         ┆ i64                ┆      ┆     ┆                ┆ i64                │
╞════════════════╪═════════╪════════════════════╪══════╪═════╪════════════════╪════════════════════╡
│ 2              ┆ A       ┆ 30                 ┆ 1    ┆ 0   ┆ 0              ┆ 3                  │
│ 4              ┆ A       ┆ 5                  ┆ 0    ┆ 0   ┆ 1              ┆ 4                  │
│ 1              ┆ B       ┆ 4                  ┆ 0    ┆ 1   ┆ 1              ┆ 3                  │
│ 3              ┆ B       ┆ 10                 ┆ 0    ┆ 0   ┆ 1              ┆ 4                  │
└────────────────┴─────────┴────────────────────┴──────┴─────┴────────────────┴────────────────────┘
  • Код: Выделить всё

    evaluation_customers
    — количество клиентов, использованных для оценки.
  • — это двоичная метка «хорошо», указывающая, что в течение (event_date, event_date+evaluation_span] дает ли инспектор хорошую оценку станции за определенное событие проверки.
    < ли> — неверная двоичная метка.
  • Код: Выделить всё

    evaluation_end
    — это конечная метка оценки, указывающая, что количество клиентов не превысило (опустилось ниже) порогового значения «хорошо» или «плохо» в течение (event_date, event_date+span)
    < ли>

    Код: Выделить всё

    actual_evaluation_end_date
    — дата окончания оценки (достигнуто хорошее или плохое пороговое значение)
Изображение



Подробнее здесь: https://stackoverflow.com/questions/781 ... first-hits
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»