Агрегация панд по таймелте и ее поведение

Я изо всех сил, чтобы сделать агрегацию на timedelta, включая построение графиков. Необработанные данные доступны здесь. По существу, данные имеют данные submit (datetime), resolved (datetime), PauseTime (timedelta) и Resolved-Submit-Pause (которые являются фактическим временем разрешения).

нажмите здесь для данных

test_df = pd.read_csv('test_df.csv')

#convert to date time stamps
test_df[['Submit','Resolved']] = test_df[['Submit','Resolved']].apply(pd.to_datetime)

#CONVERT PauseTime and Resolved-Submit-Pausetime to Timedelta

test_df['PauseTime']=pd.to_timedelta(test_df['PauseTime'])
test_df['Resolved-Submit-Pausetime'] = pd.to_timedelta(test_df['Resolved-Submit-Pausetime'])

Я пытаюсь собрать среднее значение для каждого дня "Решено"

test_df.groupby([pd.Grouper(key='Resolved', freq='D')])['Resolved-Submit-Pausetime'].mean()

что дает мне ошибку - "DataError: нет числовых типов для агрегирования"

1) Как я могу агрегировать на среднее.

2) Также приведены некоторые рекомендации для построения графика среднего времени разрешения (ось x будет иметь все даты, а ось y обозначает среднюю временную дельту "Resolved-Submit-Pausetime")

1 ответ

Используйте этот шаг для преобразования вашего столбца дельты времени в секунды:

test_df['Resolved-Submit-Pausetime'] = test_df['Resolved-Submit-Pausetime'].astype('timedelta64[s]')

0      1234.0
1     27380.0
2     33017.0
3      5454.0
4       433.0
5      2302.0
6     21753.0
7      3405.0
8      4779.0
9      3974.0
10     3389.0
11      114.0
Name: Resolved-Submit-Pausetime, dtype: float64

Затем запустите оператор groupby, чтобы вычислить среднее значение:

test_df.groupby([pd.Grouper(key='Resolved', freq='D')])['Resolved-Submit-Pausetime'].mean()

Resolved
2017-04-01    20543.666667
2017-04-02     7485.500000
2017-04-03     3132.200000
Name: Resolved-Submit-Pausetime, dtype: float64

Вы можете использовать встроенные в Pandas инструменты для построения графиков, чтобы сделать быстрый и грязный график среднего времени относительно дня групповой работы:

test_df.groupby([pd.Grouper(key='Resolved', freq='D')])['Resolved-Submit-Pausetime'].mean().plot()

Другие вопросы по тегам