Python 如何从一系列时间范围创建随时间变化的累积计数图?

Python 如何从一系列时间范围创建随时间变化的累积计数图?,python,datetime,plot,Python,Datetime,Plot,我有一份进出房间的记录 我正试图按分钟确定一个房间里有多少人 然后,绘制一张随时间变化的房间里的人的图表 样本数据: data = {'Person': ['A','B','C'], 'Enter': ['11:14:22','11:15:46','11:16:22'], 'Leave': ['11:16:40','11:18:21','11:18:22'], } df = pd.DataFrame (data, columns = ['P

我有一份进出房间的记录

  • 我正试图按分钟确定一个房间里有多少人
  • 然后,绘制一张随时间变化的房间里的人的图表
样本数据:

data = {'Person':  ['A','B','C'],
        'Enter': ['11:14:22','11:15:46','11:16:22'],
        'Leave': ['11:16:40','11:18:21','11:18:22'],
        }

df = pd.DataFrame (data, columns = ['Person','Enter','Leave'])
进入:

11:13-0(空)

11:14-1(仅限A人)

11:15-2(A+B)

11:16-3(C加A+B)

11:17-2(A左,房间内仅B+C)

11:18-2(相同)

11:19-0(空)


我想我可以用方框图(第二部分)来绘图,但我很难确定(或转换时间范围)每分钟房间里有多少人。任何建议都将不胜感激。

基本上,我已经做了以下工作:

  • 将文本转换为日期时间
  • 找到时间的最小值和最大值
  • 以1分钟的增量从最小到最大时间(#2)编写for循环
  • 编写一个嵌套for循环来迭代数据帧,并查看#3是否在“enter”和“leave”之间,使用计数器+=1
  • 用key=#3和value=counter#将结果写入字典
  • ` def循环时间(分钟):

    返回时间(atime.hour,atime.minute-1,0),时间(atime.hour,atime.minute+1,0)
    def头部计数器(dff):
    dur=(datetime.combine(datetime.today(),dff['Leave\u Time'].max())-datetime.combine(datetime.today(),dff['Join\u Time'].min())。总秒数()
    会话中的时间={}
    对于范围(0,数学单元(dur/60)+3)内的i:
    _=(datetime.combine(datetime.today(),round_minute(dff['Join_Time'].min())[0])+timedelta(minutes=i)).Time()
    计数器=0
    对于范围内的z(0,dff.形状[0]-1):
    如果(dff['Join_Time'][z]<和<
       return time(atime.hour,atime.minute-1,0), time(atime.hour,atime.minute+1,0)
    
    def headcounter(dff):
    
    dur = (datetime.combine(datetime.today(), dff['Leave_Time'].max()) - datetime.combine(datetime.today(), dff['Join_Time'].min())).total_seconds()
    
    time_in_session = {}
    for i in range(0,math.ceil(dur/60)+3):
        _ = (datetime.combine(datetime.today(), round_minute(dff['Join_Time'].min())[0]) + timedelta(minutes = i)).time()
        counter = 0
        for z in range(0,dff.shape[0]-1):
            if (dff['Join_Time'][z] < _ and _ < dff['Leave_Time'][z]):
                counter +=1
        time_in_session[_] = counter
    return time_in_session