我是一个有点初学者的程序员,正在学习 python (+pandas),希望我能很好地解释这一点。我有一个大型时间序列 pd 数据框,包含超过 300 万行,最初有 12 列,跨越多年。这涵盖了从身份证号码(共 350 个)表示的不同地点取票的人。每一行都是一个实例(占用一张票)。
我搜索过很多问题,例如每天每小时统计记录 and 几年来平均每小时。但是,我遇到了包含“Id”变量的麻烦。
我正在寻找每小时、一周中的每一天(周一至周五)和每个车站买票的人的平均值。
我有以下内容,将日期时间设置为索引:
Id Start_date Count Day_name_no
149 2011-12-31 21:30:00 1 5
150 2011-12-31 20:51:00 1 0
259 2011-12-31 20:48:00 1 1
3015 2011-12-31 19:38:00 1 4
28 2011-12-31 19:37:00 1 4
Using groupby
and Start_date.index.hour
,我似乎无法包含“Id”。
我的替代方法是将小时从日期中分离出来并具有以下内容:
Id Count Day_name_no Trip_hour
149 1 2 5
150 1 4 10
153 1 2 15
1867 1 4 11
2387 1 2 7
然后我首先得到计数:
Count_Item = TestFreq.groupby([TestFreq['Id'], TestFreq['Day_name_no'], TestFreq['Hour']]).count().reset_index()
Id Day_name_no Trip_hour Count
1 0 7 24
1 0 8 48
1 0 9 31
1 0 10 28
1 0 11 26
1 0 12 25
然后使用 groupby 和mean:
Mean_Count = Count_Item.groupby(Count_Item['Id'], Count_Item['Day_name_no'], Count_Item['Hour']).mean().reset_index()
然而,这并没有给出期望的结果,因为平均值不正确。
我希望我已经清楚地解释了这个问题。我正在寻找每个 ID 每天每小时的平均值,因为我计划在对这些组应用预测模型之前进行聚类以将数据集分成组。
任何帮助将不胜感激,如果可能的话,请解释我做错了什么,无论是代码方面还是我的方法。
提前致谢。
我对此进行了编辑,试图使其更清晰一些。在睡眠不足的情况下写问题可能是不可取的。
我从一个玩具数据集开始:
Date Id Dow Hour Count
12/12/2014 1234 0 9 1
12/12/2014 1234 0 9 1
12/12/2014 1234 0 9 1
12/12/2014 1234 0 9 1
12/12/2014 1234 0 9 1
19/12/2014 1234 0 9 1
19/12/2014 1234 0 9 1
19/12/2014 1234 0 9 1
26/12/2014 1234 0 10 1
27/12/2014 1234 1 11 1
27/12/2014 1234 1 11 1
27/12/2014 1234 1 11 1
27/12/2014 1234 1 11 1
04/01/2015 1234 1 11 1
我现在意识到我必须首先使用日期并得到类似的东西:
Date Id Dow Hour Count
12/12/2014 1234 0 9 5
19/12/2014 1234 0 9 3
26/12/2014 1234 0 10 1
27/12/2014 1234 1 11 4
04/01/2015 1234 1 11 1
然后计算每个 Id、每个 Dow、每小时的平均值。并想要得到这个:
Id Dow Hour Mean
1234 0 9 4
1234 0 10 1
1234 1 11 2.5
我希望这能让它更清楚一些。我的真实数据集跨越 3 年,包含 300 万行,包含 350 个 ID 号。