У меня есть столбец (из моих исходных данных), который я преобразовал из строки в объект datetime в Pandas.Pandas: частота подсчета объектов datetime в столбце
Колонка выглядит следующим образом:
0 2012-01-15 11:10:12
1 2012-01-15 11:15:01
2 2012-01-16 11:15:12
3 2012-01-16 11:25:01
...
4 2012-01-22 11:25:11
5 2012-01-22 11:40:01
6 2012-01-22 11:40:18
7 2012-01-23 11:40:23
8 2012-01-23 11:40:23
...
9 2012-01-30 11:50:02
10 2012-01-30 11:50:41
11 2012-01-30 12:00:01
12 2012-01-30 12:00:34
13 2012-01-30 12:45:01
...
14 2012-02-05 12:45:13
15 2012-01-05 12:55:01
15 2012-01-05 12:55:01
16 2012-02-05 12:56:11
17 2012-02-05 13:10:01
...
18 2012-02-11 13:10:11
...
19 2012-02-20 13:25:02
20 2012-02-20 13:26:14
21 2012-02-20 13:30:01
...
22 2012-02-25 13:30:08
23 2012-02-25 13:30:08
24 2012-02-25 13:30:08
25 2012-02-26 13:30:08
26 2012-02-27 13:30:08
27 2012-02-27 13:30:08
28 2012-02-27 13:30:25
29 2012-02-27 13:30:25
То, что я хотел бы сделать, это подсчитать частоту каждой даты происходящего. Как вы можете видеть, я оставил некоторые даты, но если бы я, чтобы вычислить частоту вручную (для видимых значений), я бы:
2012-01-15 - 2 (частота)
2012-01-16 - 2
2012-01-22 - 3
2012-01-23 - 2
2012-01-30 - 5
2012-02-05 - 5
2012-02-11 - 1
2012-02-20 - 3
2012-02-25 - 3
2012-02-26 - 1
2012-02-27 - 4
Это ежедневная частота, и я хотел бы считать. Я до сих пор попытался это:
df[df.str.contains(r'^\d\d\d\d-\d\d-\d\d')].value_counts()
Я знаю, что он не потому, что они не являются «строка» объекты, но я не знаю, как еще посчитать это.
Я также посмотрел на свойство .dt, но документация Pandas очень многословна для этих простых вычислений частоты.
Кроме того, чтобы обобщить это, как бы я:
- Наносить ежедневно частоту еженедельной частоты (., Например, с понедельника по воскресенье)
- Нанести дневной частоту месячной частоты (например, как. много раз я вижу «2012-01 - **» в моей колонке)
- Использование ежедневных/еженедельных/ежемесячных ограничений для других столбцов (например, если у меня есть столбец, содержащий «запросы GET», я хотел бы знать сколько произошло ежедневно, затем еженедельно, а затем ежемесячно)
- Применение еженедельного ограничения с другим ограничением (например. У меня есть столбец, который возвращает «404 Не найдено», и я хотел бы проверить, сколько «404 Не нашел, что я получил за неделю»)
Возможно, решение является долгим, где я могу нужно сделать много: split-apply-comb ...но я был убежден, что Панда упрощает/отнимает много работы, поэтому я застрял сейчас.
Источник этого файла может считаться чем-то эквивалентным файлу сервера-журнала.
Как бы я использовать дату как ограничение для подсчета частоты другого столбцы? Или я бы использовал для этого набор массивов? – Joe
Что ты имеешь в виду? Можете ли вы привести пример? Если вы хотите рассчитывать на основе нескольких столбцов, вы можете использовать 'groupby ([..]). Count()' – joris
Я упомянул об этом выше в моих 4 баллах. Я хотел бы обобщить частоту подсчета (неделя) и (месяц). Хотя я мог бы просто добавить 7 ежедневных частот в неделю и 30 ежедневных частот в течение месяца, проблема будет возникать, когда я хочу сравнить сценарий, в котором я рассчитываю «Запросы GET» в неделю/месяц. Должен ли я разбивать DataFrame, чтобы сделать это? Если да, то как бы я разделил его равномерно (по дате: например, разделите свои данные на 1 января до 31 января, с 1 февраля по 28 февраля, с 1 марта по 31 марта и т. Д.) – Joe