python,pandas,numpy,range()用于具有离散值的直方图的日期时间

时间:2018-02-15 12:35:39

标签: python pandas numpy

我想用离散值绘制日期时间值的直方图。即某些天数的每日事件。条目是离散的,因此我想确保分箱始终包含相同数量的离散值。 沿着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_datemin_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'

1 个答案:

答案 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)