Подсчет количества строк, у которых есть столбец a = x и столбец b = y, (groupby, value_count) - PullRequest
0 голосов
/ 07 февраля 2019

Здравствуйте, я пытаюсь изучить немного нового Python с некоторыми реальными данными, и я застреваю.

Данные можно найти здесь (https://edinburghcyclehire.com/open-data/historical). Выбор любого месяца иCSV-формат. Я хотел бы посчитать, сколько раз было совершено путешествие с одной станции на другую.

После импорта с:

data = pd.read_csv('09.csv')

Есть "start_station_id" и "end_station_id"столбцы.

Я хотел бы подсчитать, сколько раз совершается поездка от каждой станции до другой станции, т. е. сколько строк: «от a до b», «от a до c», от «b до a»."и т. д. (примечание: изначально" a to b "и" b to a "должны быть разными поездками, хотя я также был бы заинтересован в том, чтобы узнать, как мне вести подсчет, который учитывает" a to b "и" b to a ")."как то же самое путешествие).

Я считаю, что мне нужно использовать groupby и / или value_counts, но я не могу понять, как реализовать это после прочтения документации и просмотра стека.

Любойпредложения будут оценены.

Ответы [ 2 ]

0 голосов
/ 07 февраля 2019

Используйте group_by , чтобы найти уникальные комбинации station_a и station_b

Например:

df = df.groupby(['start_station_name','end_station_name']).count()
count = len(df)
print(count)

Обратите внимание, что вы должны применить функцию агрегирования к результату group_by .Агрегатные функции - это такие функции, как count (), mean (), max () и т. Д. Эти методы определяют способ агрегирования данных в сгруппированных строках.В этом случае вы используете count () , поскольку мы хотим подсчитать, сколько раз было совершено каждое путешествие

Редактировать

df = df.groupby(['start_station_name','end_station_name']).count()

Обратите внимание, что вызов count() в этой строке ^^^ устанавливает для всех столбцов в кадре данных количество выполненных поездок.

Например,

                                                    started_at  ended_at  duration          ...            end_station_description  end_station_latitude  end_station_longitude
start_station_name  end_station_name    

                                            ...                                                                                
Bristo Square       Bristo Square                            1         1         1          ...                                  1                     1                      1
                    Brunswick Place                          6         6         6          ...                                  6                     6                      6
                    Canonmills                               1         1         1          ...                                  1                     1                      1
                    Castle Street                            1         1         1          ...                                  1                     1                      1

Обратите внимание, что все значения для start_at , termin_at и т. Д. Совпадают.Все это теперь установлено для подсчета того, сколько раз было совершено это путешествие.то есть путешествие от площади Бристо до места Брансуика было совершено 6 раз

0 голосов
/ 07 февраля 2019

вы можете использовать булеву алгебру!вы можете сделать

data['start_station_id'] == 183

, чтобы получить карту bool, где единственное True, где start_Station_id будет 183, аналогично вы можете сделать

data['end_station_id'] == 261

, и вы можете комбинировать оба и получить

bmap = (data['start_station_id'] == 183) & (data['end_station_id'] == 261)

пожалуйста, обратите внимание, что скобки важны!

это даст вамкарта, где начальная станция и конечная остановка соответствуют, вы можете просмотреть эти данные data[bmap]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...