подсчитать, сколько разных дат существует в наборе данных - PullRequest
0 голосов
/ 16 октября 2018

У меня есть набор данных csv, который содержит много временных меток Unix построчно вместе с некоторыми координатами:

"2018-07-13 14:04:53",20.61467382,-100.40038540
"2018-07-13 14:04:53",20.61507289,-100.40076548
"2018-07-13 14:04:53",20.61516937,-100.40073449
"2018-07-13 15:01:25",20.61535620,-100.40057307
"2018-07-13 15:01:25",20.59975566,-100.37821134
"2018-07-14 12:55:13",20.59858772,-100.37838086
"2018-07-14 13:08:06",20.59864831,-100.37822228
"2018-07-14 21:51:54",20.59862009,-100.37835681
"2018-07-15 11:53:47",20.59875168,-100.37830434
"2018-07-15 12:02:01",20.59861465,-100.37837653

Я хотел бы посчитать количество различных дат, которые появляются.Как я мог достичь этого?В этом случае для этого набора данных правильный результат для цикла for будет равен 3. 13, 13 и 14 июля. Я предполагаю, что мне нужно заказать его по дням, используя панд?

Ответы [ 3 ]

0 голосов
/ 16 октября 2018

Используйте хэшсет!

import csv

with open('dates.csv', 'rb') as csvfile:
    data = list(csv.reader(csvfile))

unique_dates = set()
for row in data:
    date = row[0].split()[0]
    unique_dates.add(date)

print 'We have {} unique dates !'.format(len(unique_dates))
0 голосов
/ 16 октября 2018

Способ достижения тех же результатов без использования DataFrame s заключается в использовании datetimes и set пониманий после прочтения в файле csv

In [18]: import csv

In [19]: import datetime

In [21]: with open('dates.csv') as csvfile:
    ...:     data = list(csv.reader(csvfile))

In [22]: {datetime.datetime.strptime(row[0], '%Y-%m-%d %H:%M:%S').date() for row in data)}
Out[22]:
{datetime.date(2018, 7, 13),
 datetime.date(2018, 7, 14),
 datetime.date(2018, 7, 15)}
0 голосов
/ 16 октября 2018

Предполагая, что столбцы - это столбец даты и времени

df.iloc[:, 0].dt.normalize().nunique()

3

Просто чтобы быть уверенным,

pd.to_datetime(df.iloc[:, 0]).dt.normalize().nunique()

3

dt является аксессором даты и времени и позволяет получить атрибут dateкоторая является частью даты datetime.Затем nunique завершает работу, получая количество уникальных значений.


отредактировано в соответствии с предложением @ root dt.normalize() вместо dt.date

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