Python:一周中的求和和计数日
我需要帮助,我有一个包含以下列的csv文件:Python:一周中的求和和计数日,python,pandas,csv,Python,Pandas,Csv,我需要帮助,我有一个包含以下列的csv文件: Date Tipology inputDates dayOfWeek 0 2018-01-01 200 2018-01-01 Monday 1 2018-01-02 93 2018-01-02 Tuesday 2 2018-01-03 382 2018-01-03 Wednesday 3 2018-01-04 147 2018-01-04 Thursday 4 2018-01-05 107
Date Tipology inputDates dayOfWeek
0 2018-01-01 200 2018-01-01 Monday
1 2018-01-02 93 2018-01-02 Tuesday
2 2018-01-03 382 2018-01-03 Wednesday
3 2018-01-04 147 2018-01-04 Thursday
4 2018-01-05 107 2018-01-05 Friday
... ... ... ... ...
360 2018-12-27 155 2018-12-27 Thursday
361 2018-12-28 148 2018-12-28 Friday
362 2018-12-29 129 2018-12-29 Saturday
363 2018-12-30 129 2018-12-30 Sunday
364 2018-12-31 147 2018-12-31 Monday
我想在星期一总结一下tipology,我正在做:
groupweek = df1.groupby(['dayOfWeek','Tipology']).count()
groupweek
我收到
Date inputDates
dayOfWeek Tipology
Friday 107 1 1
113 1 1
117 1 1
118 1 1
119 1 1
.........................
Monday 104 1 1
111 1 1
113 1 1
118 1 1
..........................
etc. etc
理论上,我认为把星期五、星期一等的所有类型加起来,我得到了多少种类型(一周中每天发生的数值总和),但这并没有发生,所以我不确定通过下面的操作,我得到了我想要的:
in:
groupweek = df1.groupby(['dayOfWeek'],as_index=False)['Tipology'].sum()
groupweek
out:
dayOfWeek Tipology
0 Friday 8356
1 Monday 9245
2 Saturday 8685
3 Sunday 8489
4 Thursday 8629
5 Tuesday 8959
6 Wednesday 9273
数字tipology值是否根据2018年的星期几进行分组和汇总
使用count()(应该有所有52个星期五、52个星期一等)添加它们不会给出sum()的结果。您的第一个实现:
groupweek = df1.groupby(['dayOfWeek','Tipology']).count()
等效sql:
select count(Date), count(inputDates) from df1 group by dayOfWeek, Tipology
select count(Tipology) from df1 group by dayOfWeek
select sum(Tipology) from df1 group by dayOfWeek
您在groupBy中使用了两列:“dayOfWeek”和“Tipology”
这为('dayOfWeek','Tipology')组合创建了唯一的行
相反,您只希望在周中的某一天具有唯一性。因此,从逐列分组中删除列“Tipology”就可以了。这将给你所有的52和53
groupweek = df1.groupby(['dayOfWeek'])['Tipology'].count()
等效sql:
select count(Date), count(inputDates) from df1 group by dayOfWeek, Tipology
select count(Tipology) from df1 group by dayOfWeek
select sum(Tipology) from df1 group by dayOfWeek
您的第二个实现是正确的。Tipology按daysOfWeek分组,然后按和函数聚合
groupweek = df1.groupby(['dayOfWeek'],as_index=False)['Tipology'].sum()
等效sql:
select count(Date), count(inputDates) from df1 group by dayOfWeek, Tipology
select count(Tipology) from df1 group by dayOfWeek
select sum(Tipology) from df1 group by dayOfWeek
您的第一个实现:
groupweek = df1.groupby(['dayOfWeek','Tipology']).count()
等效sql:
select count(Date), count(inputDates) from df1 group by dayOfWeek, Tipology
select count(Tipology) from df1 group by dayOfWeek
select sum(Tipology) from df1 group by dayOfWeek
您在groupBy中使用了两列:“dayOfWeek”和“Tipology”
这为('dayOfWeek','Tipology')组合创建了唯一的行
相反,您只希望在周中的某一天具有唯一性。因此,从逐列分组中删除列“Tipology”就可以了。这将给你所有的52和53
groupweek = df1.groupby(['dayOfWeek'])['Tipology'].count()
等效sql:
select count(Date), count(inputDates) from df1 group by dayOfWeek, Tipology
select count(Tipology) from df1 group by dayOfWeek
select sum(Tipology) from df1 group by dayOfWeek
您的第二个实现是正确的。Tipology按daysOfWeek分组,然后按和函数聚合
groupweek = df1.groupby(['dayOfWeek'],as_index=False)['Tipology'].sum()
等效sql:
select count(Date), count(inputDates) from df1 group by dayOfWeek, Tipology
select count(Tipology) from df1 group by dayOfWeek
select sum(Tipology) from df1 group by dayOfWeek
对不起,这不是一个意见,而是一个请求。我有个问题要解决!同时,谢谢你的回答!如果我想做相反的事情呢?也就是说,看看一年中哪一天有更多的类型,以图形化的方式呈现,没有计数我怎么办()?使用
sns.barplot(x='dayOfWeek',y='Tipology',data=df1,estimator=sum)
可能是您想要的,或者sns.countplot
。非常感谢。。但我想通过groupby到达那里,我正在使用plotly Historogram2dContour!对不起,这不是一个意见,而是一个请求。我有个问题要解决!同时,谢谢你的回答!如果我想做相反的事情呢?也就是说,看看一年中哪一天有更多的类型,以图形化的方式呈现,没有计数我怎么办()?使用sns.barplot(x='dayOfWeek',y='Tipology',data=df1,estimator=sum)
可能是您想要的,或者sns.countplot
。非常感谢。。但我想通过groupby到达那里,我正在使用plotly Historogram2dContour!谢谢你的回答,正如我在上面评论的那样:如果我想做相反的事情呢?也就是说,看看一年中哪一天有更多的类型,以图形化的方式表示,没有count()我怎么办?count只给出行计数。它只会给出周一或周二的天数。如何定义更多拓扑?使用sum时,可以获得更多类型的聚合。你在寻找max吗?事实上,我需要2018年的每个星期五(例如星期五),每个星期五你想要过滤的tipology的每日价值(显然是一周中的每一天)。这应该会有帮助:df.tipology[df['day']=='Friday']链接:谢谢你的回答,正如我在上面评论的那样:如果我想做相反的事情呢?也就是说,看看一年中哪一天有更多的类型,以图形化的方式表示,没有count()我怎么办?count只给出行计数。它只会给出周一或周二的天数。如何定义更多拓扑?使用sum时,可以获得更多类型的聚合。你在寻找max吗?事实上,我需要2018年的每个星期五(例如星期五),每个星期五你想要过滤的tipology的每日价值(显然是一周中的每一天)。这应该有帮助:df.tipology[df['day']=='Friday']链接: