Это мой первый вопрос по StackOverflow, поэтому я постарался быть максимально четким и лаконичным. Большое спасибо за ваше терпение заранее.
Справочная информация
У меня есть набор данных о поездах с 17 атрибутами, в том числе: origin_station_code
, origin_station
, destination_station_code
, destination_station
, route_code
, start_time
, end_time
, fleet_number
, station_code
, station
, station_type
, platform
, sch_arr_time
, sch_dep_time
, act_arr_time
, act_dep_time
, date
.
Из этих атрибутов меня интересуют только: date
, origin_station
, destination_station
и start_time
.
Этот набор данных состоит из 61 отдельных CSV-файлов, которые были объединены в один DataFrame из более чем миллиона строк с использованием функции glob и др. oop.
Каждая строка DataFrame представляет отдельную остановку поездки на поезде. Полный маршрут состоит из нескольких остановок, на следующем снимке экрана показан пример маршрута, состоящего из 19 остановок, Sugar Wave to Attempt Pin: here .
Новый атрибут с именем complete_route name
был создан путем объединения атрибутов origin_station
и destination_station
. Это может идентифицировать все маршруты, из которых существует 81 уникальная запись.
Задача
Моя задача состоит в том, чтобы создать подмножество DataFrame, используя pandas, так что набор данных показывает 3 самых популярных маршрута, на дату. Этот подмножество DataFrame должно показывать date
, complete_route name
и количество раз, которое этот маршрут проходил каждый день. Количество уникальных раз, когда маршрут проходил, можно определить, применив метод nunique к атрибуту start_time
(тип даты / времени).
Мой текущий прогресс
В настоящее время мой код GroupBy и Aggregate может показывать, сколько раз каждый маршрут выполнялся в день, следующим образом:
df_grouped = df.groupby(
['date', 'complete_route_name']
).agg(
{
'start_time': 'nunique' # count the number of unique routes by using the 'nunique' of the start_times
}
).reset_index()
Теперь я хочу взять свой существующий код, чтобы он отображал только 3 уникальных маршрута по количеству в день, например,
date complete_route_name count
2015-08-01 Attempt Pin to Roll Test 101
Suit Treatment Turnback to Spiders Toothbrush 93
Concourse Village to Port Morris 87
2015-08-02 Bridge Bottle to Ants Attempt 119
North Riverdale to Eastchester 117
Wakefield to Kingsbridge 101
......
2015-09-30 Castleton Corners to Dongan Hills 121
Eltingville to Graniteville 119
Great Kills to Castleton 117
Любая помощь с этим будет принята с благодарностью!
Дополнительные ресурсы
Исходный набор данных и мою рабочую книгу в ее текущем состоянии можно найти на моем GitHub , если это имеет какое-либо значение / интерес. Статистическую книгу c можно также просмотреть здесь .
Большое спасибо!