#python #matplotlib #histogram #timedelta
#python #matplotlib #гистограмма #timedelta
Вопрос:
У меня есть df с информацией [‘time_start’,’time_end’] со столбцами типа datetime. Добавление нового столбца:
df['period'] = df['time_end'] - df['time_start']
Затем я хотел бы понять гистограмму «периода» и попытаться построить график:
plt.hist(df['period'], color = 'cyan', edgecolor = 'black', bins = int(180/10))
plt.show()
и верните ошибку:
UFuncTypeError: Cannot cast ufunc 'less' input 1 from dtype('float64') to dtype('<m8[ns]') with casting rule 'same_kind'
между тем, plt из df[‘time_start’] работает нормально.
если бы я изменил значение ‘delta’ на секунды на:
df['period'] = (df['time_end'] - df['time_start']).dt.seconds
он также отлично работает.
Не могли бы вы объяснить, как анализировать данные timedelta?
Комментарии:
1. Можете ли вы показать, как
df.period.head()
это выглядит? Это может быть что-то простое, например, сначала нужно преобразовать в float:(df.time_end - df.time_start).astype(float)
? Без воспроизводимого примера мне трудно быть уверенным2. @MichaelSilverstein вот оно: 0 0 дней 01:21:20.034990 1 0 дней 19:39:04.498480 2 5 дней 21:33:43.898156 3 0 дней 14:15:47.531027 4 0 дней 15:17:58.905265 Имя: rent_time, dtype: timedelta64[ns]
3. что касается вашего кода, я бы предложил использовать
.total_seconds()
не только.seconds
. Кроме этого, » как анализировать данные timedelta » на самом деле не является вопросом программирования (= не по теме на SO)…4. @MrFuppes Спасибо!