В настоящее время я пишу конвейер «Разделить - применить - объединить» для анализа данных, который также включает даты. Вот некоторые примеры данных:
In [1]:
import pandas as pd
import numpy as np
import datetime as dt
startdate = np.datetime64("2018-01-01")
randdates = np.random.randint(1, 365, 100) + startdate
df = pd.DataFrame({'Type': np.random.choice(['A', 'B', 'C'], 100),
'Metric': np.random.rand(100),
'Date': randdates})
df.head()
Out[1]:
Type Metric Date
0 A 0.442970 2018-08-02
1 A 0.611648 2018-02-11
2 B 0.202763 2018-03-16
3 A 0.295577 2018-01-09
4 A 0.895391 2018-11-11
Теперь я хочу агрегировать по 'Type'
и получить сводную статистику по соответствующим переменным. Это легко для числовых переменных, таких как 'Metric'
:
df.groupby('Type')['Metric'].agg(('mean', 'std'))
Однако для объектов даты и времени вычисление среднего значения, стандартного отклонения или другой статистики не имеет смысла и выдает ошибку. Контекст, для которого мне нужна эта операция, заключается в том, что я моделирую дату на основе некоторой метрики расстояния. Когда я повторяю это моделирование со случайной выборкой (симуляция Монте-Карло), я позже хочу переназначить среднее значение и доверительный интервал для смоделированных дат.
Итак, мой вопрос: какую полезную статистику можно построить с данными даты и времени? Как вы представляете статистическое распределение смоделированных дат? А как вы реализуете операцию агрегирования?
Мой идеальный вывод - получить столбцы Date_mean
и Date_stdev
, представляющие диапазон для моих смоделированных дат.