【发布时间】:2020-11-04 23:20:02
【问题描述】:
我在准备数据以使其适合绘制到图表时遇到问题。这是我的数据框:
Date Lane Lane Name Direction DirectionName \
0 2018-02-02 00:00:03.000 6 SB_NS 2 South
1 2018-02-02 00:00:22.010 5 SB_MID 2 South
2 2018-02-02 00:00:22.020 4 SB_OS 2 South
3 2018-02-02 00:00:36.040 6 SB_NS 2 South
4 2018-02-02 00:00:49.070 6 SB_NS 2 South
... ... ... ... ... ...
503763 2018-02-27 23:59:00.090 2 NB_MID 1 North
503764 2018-02-27 23:59:29.090 6 SB_NS 2 South
503765 2018-02-27 23:59:32.050 4 SB_OS 2 South
503766 2018-02-27 23:59:33.070 6 SB_NS 2 South
503767 2018-02-27 23:59:58.050 1 NB_NS 1 North
Speed (mph) Headway (s) Gap (s) Flags Flag Text
0 38.525 NaN NaN 5 Friday
1 32.310 NaN NaN 5 Friday
2 44.739 NaN NaN 5 Friday
3 33.554 NaN NaN 5 Friday
4 39.768 12.300 11.847 5 Friday
... ... ... ... ... ...
503763 32.932 4.415 3.833 2 Tuesday
503764 29.825 65.500 64.700 2 Tuesday
503765 29.205 236.000 235.848 2 Tuesday
503766 37.283 3.330 3.462 2 Tuesday
503767 36.661 76.000 75.669 2 Tuesday
[503768 rows x 10 columns]
是交通数据。每一行都是对某个时间点的流量的单一观察。标志只是一周中的一天。数据是在每月的每周二和周五收集的。所以数据框包含 8 个不同的日期,4 个星期二,4 个星期五
我想绘制两张图。一个图表将仅显示南方数据,另一个将仅显示北方数据。这两个图表都应显示我选择的选定日期(例如 2018 年 2 月 2 日)一天中每个小时的平均流量。
所以为了澄清,这里是输出应该是什么:
-
2018-02-02 的两个条形图,一个为北方向,一个为南方向
-
每个条形图应显示平均流量 一天中的每个小时。
我只是对如何仅收集单个日期的数据以及如何收集该日期每小时的平均流量感到有些困惑。
到目前为止,我已经按日期/小时分组并统计了总数...如下所示。
Date DirectionName count
0 2018-02-02 00:00:00 North 212
1 2018-02-02 00:00:00 South 250
2 2018-02-02 01:00:00 North 130
3 2018-02-02 01:00:00 South 137
4 2018-02-02 02:00:00 North 76
... ... ... ...
379 2018-02-27 21:00:00 South 801
380 2018-02-27 22:00:00 North 425
381 2018-02-27 22:00:00 South 511
382 2018-02-27 23:00:00 North 233
383 2018-02-27 23:00:00 South 301
问题是,计数显然不是每小时的平均值。当我只想使用特定日期(例如 2018-02-02)时,此方法也会使用每个日期。
- 如何更改当前方法以显示平均每小时而不是每小时总数?
- 如何更改当前方法以仅显示特定日期?
- 我目前的方法不合适/有更好的方法吗?
这是我当前方法的代码;
df.Date=pd.to_datetime(df.Date)
df.groupby([pd.Grouper(key='Date',freq='H'),df.DirectionName]).size().reset_index(name='count')
一些建议/澄清将不胜感激:)
【问题讨论】:
标签: python pandas datetime graph average