我想用离散值绘制日期时间值的直方图。即某些天数的每日事件。条目是离散的,因此我想确保分箱始终包含相同数量的离散值。 沿着these行的东西。
## data is a pandas.DataFrame
## data['DTM'] contains datetimes
min_date = data.DTM.dt.date.min()
max_date = data.DTM.dt.date.max()
n_days = (max_date - min_date ).days
# each bin should contain one day
bins = np.arange(min_date, max_date + 1, 1)
data.DTM.dt.date.hist(range=(min_date, max_date), bins=bins)
此操作失败,因为max_date
和min_date
是日期时间对象,np.arange
需要整数。是否有一个方便的功能与range()
或numpy.arange()
的日期相同?
或者有更优雅的方法来解决这个问题吗?
我尝试了pd.date_range(min_date, max_date + pd.Timedelta(1, unit='d')).date
但是,将其传递给pd.data.hist()会导致错误:
TypeError: '<' not supported between instances of 'float' and 'datetime.date'
答案 0 :(得分:0)
我发现了一些可以解决问题的方法。并且它不会弄乱xticks! 感谢Stev!
tmp = data[['DTM']].set_index('DTM')
tmp['Count'] = 1
tmp.groupby(pd.Grouper(freq='d')).count()
plt.bar(tmp.index, tmp.Count)