如何用plotly python绘制时间序列堆积条形图

2024-06-25 22:43:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我在pandas dféres中有以下数据帧,我们可以用如图所示的几行来调用它。

   date       time      weekday      team    recipient
 2019-08-30 14:49:22    Friday      team1   building308@list.com
 2019-08-30 05:57:51    Friday      team1   notification@listcom
 2019-08-29 22:54:58    Thursday    team1   robert.r@gmail.com
 2019-08-29 22:54:58    Thursday    team1   emcor@list.com
 2019-08-30 06:26:12    Friday      team1   building308@list.com
 2019-09-05 14:16:22    Thursday    team1   pqr@xyz.com
 2019-09-05 14:16:22    Thursday    team1   flash_hvac@list.com
 2019-09-04 22:54:59    Wednesday   team1   robert.r@gmail.com
 2019-09-04 22:54:59    Wednesday   team1   emcor@list.com

我想绘制一张图表,其中x轴是2019年6月至2019年10月的日期。y轴是指收件人在给定日期收到电子邮件的次数。所以我想做一个堆积条形图,每个堆栈都是一个收件人。例如:在“2019-08-30”这一天,有2封邮件building308@list.com'和1代表'通知@listcom'. 所以那天我有两堆。我也希望能够提供一个名单的几个收件人的电子邮件计数我感兴趣。我写了下面的代码来做同样的事情,但我在努力如何得到一个收件人的数量。相反,如果计数是一个列表或列,我可以绘图,但这对我没有用处,因为数据帧很大,有超过1000行。

^{pr2}$

更新以添加代码:10/11/2019 #绘制值

    trace = go.Bar(
           x=[datetime.datetime(year=2019, month=8, day=1),
              datetime.datetime(year=2019, month=10, day=1)],
           y=[res_test['recipients'].value_counts()],
           name='Plot the values '
          )

      data = [trace]
      layout = go.Layout(title="Emails per volunteer", xaxis= 
                 {'title':'Date'}, yaxis={'title':'Email count'},
               barmode='stack'
                )


       fig = go.Figure(data=data, layout=layout)
       py.iplot(fig)

我就是这样把值传给y轴的吗?


Tags: 数据comgodatadatetimetitleres收件人
1条回答
网友
1楼 · 发布于 2024-06-25 22:43:10

数据准备

date =['2019-08-30 14:49:22',
       '2019-08-30 05:57:51',
       '2019-08-29 22:54:58',
       '2019-08-29 22:54:58',
       ]
rec = ['building308@list.com','building308@list.com','emcor@list.com','pqr@xyz.com']
data = pd.DataFrame({
         'date':date,
         'recipient':rec
         })

示例数据帧:

^{pr2}$

获取电子邮件计数:每天电子邮件总数

new_data = data.groupby(by=['date_extract','recipient']).size()
print(new_data)

date_extract  recipient           
2019-08-29    emcor@list.com          1
              pqr@xyz.com             1
2019-08-30    building308@list.com    2

由于新的_数据是系列的,您可以直接以绘图方式将其传递给x或y参数。在

总接受者

recipient_frequency = data['recipient'].value_counts()

# Recipient distribution
recipient_frequency
Out[]: 
building308@list.com    2
emcor@list.com          1
pqr@xyz.com             1
Name: recipient, dtype: int64

# Total recipient count
len(recipient_frequency)
Out[]: 3

如果您对plotly-plots有问题,请参考以下教程:https://github.com/SayaliSonawane/Plotly_Offline_Python

相关问题 更多 >