如何在 pandas dataframe 中按月分组(示例)


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

 df. groupby (df. your_date_column . dt . month )[' values_column ']. sum ()

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

请注意, dt.month()函数从 pandas 的日期列中提取月份。

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

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

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

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' date ': pd.date_range (start=' 1/1/2020 ', freq=' W ', periods= 10 ),
                   ' sales ': [6, 8, 9, 11, 13, 8, 8, 15, 22, 9],
                   ' returns ': [0, 3, 2, 2, 1, 3, 2, 4, 1, 5]})

#view DataFrame
print (df)

        date sales returns
0 2020-01-05 6 0
1 2020-01-12 8 3
2 2020-01-19 9 2
3 2020-01-26 11 2
4 2020-02-02 13 1
5 2020-02-09 8 3
6 2020-02-16 8 2
7 2020-02-23 15 4
8 2020-03-01 22 1
9 2020-03-08 9 5

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

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

 #calculate sum of sales grouped by month
df. groupby (df. date . dt . month )[' sales ']. sum ()

date
1 34
2 44
3 31
Name: sales, dtype: int64

以下是如何解释结果:

  • 第 1 个月(一月)的总销量为34
  • 第 2 个月(2 月)的总销量为44
  • 第 3 个月(3 月)的总销量为31

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

 #calculate max of sales grouped by month
df. groupby (df. date . dt . month )[' sales ']. max ()

date
1 11
2 15
3 22
Name: sales, dtype: int64

我们可以使用类似的语法来计算我们想要按日期列的每月值分组的任何值。

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

其他资源

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

Pandas:如何计算每组的累计和
Pandas:如何按组计算唯一值
Pandas:如何按组计算相关性

添加评论

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