gpt4 book ai didi

python - 时间序列: Mean per hour per day per Id number

转载 作者:太空宇宙 更新时间:2023-11-04 03:32:32 28 4
gpt4 key购买 nike

我是一名初学者,正在学习 python (+pandas),希望我能很好地解释这一点。我有一个超过 300 万行的大型时间序列 pd 数据框,最初有 12 列跨越多年。这涵盖了从不同地点取票的人,这些地点用身份证号表示(其中 350 个)。每行是一个实例(一张票)。我搜索了很多问题,例如 counting records per hour per daygetting average per hour over several years .但是,我遇到了包含“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

使用 groupbyStart_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_Count = Count_Item.groupby(Count_Item['Id'], Count_Item['Day_name_no'], Count_Item['Hour']).mean().reset_index()

但是,由于平均值不正确,这并没有给出预期的结果。我希望我已经清楚地解释了这个问题。我在寻找每个 Id 每天每小时的平均值,因为我计划在对这些组应用预测模型之前进行聚类以将我的数据集分成几组。

任何帮助将不胜感激,如果可能的话,请解释我在代码方面或我的方法上做错了什么。

提前致谢。

我已经对其进行了编辑,以使其更清晰一些。写一个 sleep 不足的问题可能是不可取的。我开始使用的玩具数据集:

    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 号。

最佳答案

你的问题不是很清楚,希望对你有帮助:

df.reset_index(inplace=True)
# helper columns with date, hour and dow
df['date'] = df['Start_date'].dt.date
df['hour'] = df['Start_date'].dt.hour
df['dow'] = df['Start_date'].dt.dayofweek
# sum of counts for all combinations
df = df.groupby(['Id', 'date', 'dow', 'hour']).sum()
# take the mean over all dates
df = df.reset_index().groupby(['Id', 'dow', 'hour']).mean()

关于python - 时间序列: Mean per hour per day per Id number,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30495163/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com