Python:一周中的求和和计数日

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

我需要帮助,我有一个包含以下列的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 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']链接: