Следующая функция возвращает текущее и предыдущее значения в цикле:
In [1]:
def this_and_prev(iterable):
iterator = iter(iterable)
prev_item = None
curr_item = next(iterator)
for next_item in iterator:
yield (prev_item, curr_item)
prev_item = curr_item
curr_item = next_item
yield (prev_item, curr_item)
In [2]:
for i,j in this_and_prev( range(5) ): print i,j
По аналогии требуется написать функцию, которая будет возвращать текущее и следующее значения.
Type your code below
In [ ]:
Есть следующая SQL таблица sample_table:
column name | driver_id | start_timestamp | status |
data type | (String) | (String) | (String) |
1 | driver_id_1 | 2017-01-21 00:05 | driving |
2 | driver_id_1 | 2017-01-21 00:09 | waiting |
... | ... | ... | ... |
k x n | driver_id_n | 2017-01-21 23:49 | transporting |
Для простоты предположим, что по каждому водителю в таблице одинаковое число записей k.
In [3]:
def row_number(driver_id, input_data):
sorted_data = sorted(input_data, lambda x: x[0]) # сортируем список входных данных по дате
result = []
row_number = 0
while row_number <= range( 0, len(input_data) ):
row_data = {'row_number': row_number
, 'driver_id': driver_id
, 'start_timestamp': sorted_data[row_number][0]
, 'status': sorted_data[row_number][1]
}
row_number += 1
result.append(row_data)
return result
In [ ]:
$row_number = Python::row_number(driver_id, input_data);
$raw = (
SELECT
driver_id
, start_timestamp
, status
FROM sample_table
);
$reduced = (
REDUCE $raw
ON driver_id
USING $row_number((start_timestamp, status))
);
SELECT * FROM $reduced;
column name | row_number | driver_id | start_timestamp | status |
data type | (Int32) | (String) | (String) | (String) |
1 | 1 | driver_id_1 | 2017-01-21 00:05 | driving |
2 | 2 | driver_id_1 | 2017-01-21 00:09 | waiting |
... | ... | ... | ... | ... |
k x n | k | driver_id_n | 2017-01-21 23:49 | transporting |
Type your code below
In [ ]:
Есть следующая таблица с заказами клиентов:
column name | id | client_id | driver_id | timestamp | cost | payment_type | status |
data type | (String) | (String) | (String) | (String) | (Double) | (String) | (String) |
1 | some_id | some_client_id | some_driver_id | 2016-01-21 12:03 | 123.0 | cash | completed |
2 | some_id | some_client_id | some_driver_id | 2016-01-21 11:42 | 99.0 | card | rider_canceled |
... | ... | ... | ... | ... | ... | ... | ... |
n | some_id | some_client_id | some_driver_id | 2016-01-21 15:16 | 0.0 | card | driver_canceled |
Нужно посчитать следующие метрики:
1. Как процент выполнения заказов зависит от типа оплаты?
2. Какой процент активных водителей совершает в неделю более 30 поездок?
3. Какой процент клиентов, совершивших первую поездку за наличные впоследствии переходит на оплату картой?
Type your answer below
In [ ]:
Город порезан на "квадраты". В момент t возникает точка на карте в пределах выделенной зоны (большого квадрата). Определить в какой из малых квадратов она попадет можно, например, с помощью перебора (bruteforce), который в среднем будет решать задачу за линейное время. Какой более эффективный алгоритм можно предложить для решения данной задачи и за какое время он будет ее решать?
Для выполнения задания не требуется писать код, можно описать логику алгоритма в 5-10 предложениях.
Type your answer below
In [ ]:
Необходимо понять, как прохождение обучения работе с приложением влияет на конверсию водителей из заявки на сайте (лид) в первую поездку (начало работы). Среди 1200 лидов прошедших обучение первую поездку сделали 370, среди группы не прошедшей обучение поехали 1250 из 4500 водителей. Какое решение вы бы приняли и почему?
Допустим, эксперимент показал, что конверсия выросла. Рассматривается возможность сделать обучение обязательным. Как это повлияет на показатели привлечения? Можно ли принимать это решение основываясь только на конверсии?
Следующий шаг эксперимента - в дополнение к конверсии нужно сравнить выручку, которую приносит водитель за первый месяц работы. Как правильно рассчитать эту выручку? Допустим, в группе с обучением, средняя выручка составила 52к рублей, а в группе без обучения 49к. Как бы вы принимали это решение основываясь на выручке и конверсии? Какой KPI на ваш взгляд важнее и почему? Меняется ли что-то в статистическом подходе к сравнению при переходе от конверсии к выручке?
Type your answer below
In [ ]:
В часы пик количество желающих воспользоваться такси резко возрастает и машин начинает не хватать. Для того чтобы обеспечить надежность сервиса в платформу заложен механизм балансировки спроса и предложения через динамическое ценообразование (surge pricing).
Type your answer below
In [ ]: