如何在 pandas dataframe 中按周分组(举例)


您可以使用以下基本语法在 pandas DataFrame 中按周对行进行分组:

 #convert date column to datetime and subtract one week
df[' date '] = pd. to_datetime (df[' date ']) - pd. to_timedelta (7, unit=' d ')

#calculate sum of values, grouped by week
df. groupby ([pd. Group (key=' date ', freq=' W ')])[' values ']. sum ()

这个特定的公式按周对日期列中的行进行分组,并计算 DataFrame 中值列的值的总和。

以下示例展示了如何在实践中使用此语法。

示例:如何在 Pandas 中按周分组

假设我们有以下 pandas DataFrame,它显示了一家公司在不同日期的销售额:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' date ': pd. date_range (start='1/5/2022', freq='D', periods=15),
                   ' sales ': [6, 8, 9, 5, 4, 8, 8, 3, 5, 9, 8, 3, 4, 7, 7]})

#view DataFrame
print (df)

         dirty date
0 2022-01-05 6
1 2022-01-06 8
2 2022-01-07 9
3 2022-01-08 5
4 2022-01-09 4
5 2022-01-10 8
6 2022-01-11 8
7 2022-01-12 3
8 2022-01-13 5
9 2022-01-14 9
10 2022-01-15 8
11 2022-01-16 3
12 2022-01-17 4
13 2022-01-18 7
14 2022-01-19 7

相关:如何在 Pandas 中创建日期范围

我们可以使用以下语法来计算按周分组的销售额总和:

 #convert date column to datetime and subtract one week
df[' date '] = pd. to_datetime (df[' date ']) - pd. to_timedelta (7, unit=' d ')

#calculate sum of values, grouped by week
df. groupby ([pd. Group (key=' date ', freq=' W ')])[' sales ']. sum ()

date
2022-01-02 32
2022-01-09 44
2022-01-16 18
Freq: W-SUN, Name: sales, dtype: int64

以下是如何解释结果:

  • 从 2022 年 1 月 2 日后的第二天开始的一周内,共有32 笔销售。
  • 从 2022 年 1 月 9 日起的一周内,共有44笔销售。
  • 自 2022 年 1 月 16 日之后的一周内,共完成18 笔销售。

应该注意的是,默认情况下,pandas 假设一周是从星期日后的第二天开始的( W-SUN )。

但是,根据文档,您可以更改Freq的此值。

例如,如果您希望每周从星期一(即星期二)后的一天开始,则可以指定Freq=W-MON

我们可以使用类似的语法来计算按周分组的最大销售额:

 #convert date column to datetime and subtract one week
df[' date '] = pd. to_datetime (df[' date ']) - pd. to_timedelta (7, unit=' d ')

#calculate max of values, grouped by week
df. groupby ([pd. Group (key=' date ', freq=' W ')])[' sales ']. max ()

date
2022-01-02 9
2022-01-09 9
2022-01-16 7
Freq: W-SUN, Name: sales, dtype: int64

以下是如何解释结果:

  • 2022 年 1 月 2 日之后的一周内,每天的最大销量为9
  • 从 01/9/2022 次日开始的一周内,每天的最大销售数量为9
  • 从 01/16/2022 次日开始的一周内,每天的最大销售数量为7

注意:您可以在此处找到 pandas 中groupby操作的完整文档。

其他资源

以下教程解释了如何在 pandas 中执行其他常见操作:

如何在 Pandas DataFrame 中按月分组
如何在 Pandas DataFrame 中按天分组
如何在 Pandas 中使用 Groupby 和条件计数

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注