熊猫:给定开始和结束日期,制作日期直方图?

理查德

我有此数据:

df = pd.DataFrame({'start_date': ['2019/12/01 01:00:00', '2019/12/05 01:00:00', 
                                  '2019/12/01 01:00:00', '2019/12/01 01:00:00'],
                   'end_date': ['2019/12/05 10:00:00', '2019/12/09 10:00:00', 
                                '2019/12/11 10:00:00', '2019/12/09 01:00:00'],
                   'campaign_id' : [1,2,3,4]})

我想绘制从2019/12/01到2019/12/11每天活跃的广告系列数量。

我怎样才能做到这一点?就像直方图一样,但是按日期-但是每行有多个日期。

我已经将列转换为时间戳:

df.start_date = df.start_date.astype('datetime64[ns]')
df.end_date = df.start_date.astype('datetime64[ns]')

也许我需要一个新的专栏文章pd.date_range,然后就可以对熊猫进行一些聪明的分组了……?

df["date_range"] = pd.date_range(df.start_date, df.end_date)

但这给了我一个错误。

我猜想更手动的方法是每天创建一个新的数据行,然后是直方图?

广晃

也许这样:

pd.concat([
    pd.Series(x.campaign_id, index=pd.date_range(x.start_date, x.end_date, freq='D'))
    for i, x in df.iterrows()
]).groupby(level=0).value_counts().unstack('date').plot.bar()

或这个:

df['start_date'] = pd.to_datetime(df['start_date']).dt.normalize()
df['end_date'] = pd.to_datetime(df['end_date']).dt.normalize()

(df.assign(dummy=1)
   .merge(pd.DataFrame({'dummy':1,
                        'date': pd.date_range('2019-12-01', '2019-12-11', freq='D')}),
          on='dummy'
         )
   .query('start_date<=date<=end_date')
   .groupby('date')['campaign_id']
   .value_counts()
   .unstack('date')
   .plot.bar()
)

输出:

在此处输入图片说明

或删除'date'内部unstack()以按日期获取计数:

在此处输入图片说明

或者,如果您对每日活动总数感兴趣:

(df.assign(dummy=1)
   .merge(pd.DataFrame({'dummy':1,
                        'date': pd.date_range('2019-12-01', '2019-12-11', freq='D')}),
          on='dummy'
         )
   .query('start_date<=date<=end_date')
   .groupby('date')['campaign_id']
   .count()
   .plot.bar()
)

输出:

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Bootstrap中的开始日期和结束日期

AngularJS开始日期和结束日期验证

PHP日期-从WmY格式获取给定星期的开始和结束日期

熊猫-更改重新采样的时间序列的开始和结束日期

如何使用熊猫的开始日期和结束日期提取DataFrame

给定开始和结束日期的熊猫重新采样时间序列

根据给定的日期记录创建开始日期和结束日期列

在给定开始日期和结束日期的情况下,如何创建日期范围

Python:从熊猫的周数和年份中计算一周的开始日期和结束日期

如何开始和结束日期

AngularJS中的开始日期和结束日期

日期范围中的开始和结束日期

获取给定开始日期和结束日期之间的每月工作日

Excel- VBA:给定开始日期和结束日期,请创建两个日期之间的日期数组

从给定的开始日期获取结束日期基准

获取给定开始日期,结束日期和星期几的日期

以角度计算特定月份给定周数的开始和结束日期

从给定的季度 SQL 计算开始日期和结束日期

选定日期的开始和结束日期

用开始日期和结束日期聚合

给定开始和结束日期的预期付款日期

开始日期和结束日期的 Sas 循环

生成属于给定开始日期和结束日期的开始日期、结束日期和周数

使用给定日期拆分开始和结束日期

获取开始日期和结束日期熊猫列之间的所有日期

是否可以为 dateRangeInput 分别制作开始日期和结束日期的observeEvent?

给定开始日期和结束日期的月份中的天数

开始日期和结束日期的对齐

获取开始日期和结束日期