📜  Python - 在 K 范围内对日期进行分组(1)

📅  最后修改于: 2023-12-03 15:04:02.932000             🧑  作者: Mango

Python - 在 K 范围内对日期进行分组

在日常数据分析中,经常需要将一段时间内的数据按时间进行分组。比如将 2020 年 1 月到 2020 年 12 月之间的销售数据按季度或月份进行汇总统计。本文介绍了如何使用 Python 对日期进行分组,以及如何根据 K 数量的大小灵活控制分组的粒度。

步骤
1. 导入数据

首先,我们需要导入一个包含日期信息的数据集。这里我们使用 Python 内置的 datetime 模块,生成一个包含 1 年时间范围内的日期列表,并随机生成一些销售数据:

from datetime import datetime, timedelta
import random

start_date = datetime(2021, 1, 1)
end_date = datetime(2021, 12, 31)
dates = [start_date + timedelta(days=i) for i in range((end_date-start_date).days+1)]
sales = [random.randint(100, 1000) for _ in range(len(dates))]
2. 计算时间差

接下来,我们需要计算每个日期和起始日期之间的时间差,以便后续根据时间差进行分组。这里使用了 Python 中的列表解析式和 total_seconds() 方法:

time_diff = [(date-start_date).total_seconds() for date in dates]
3. 分组

现在,我们可以根据时间差进行分组了。下面是一个简单的函数,将时间差按照 K 的大小进行划分,并返回每个时间差所在的组别:

def group_dates(time_diff, k):
    groups = []
    for i in range(len(time_diff)):
        group = int(time_diff[i] / (k * 24 * 3600))
        groups.append(group)
    return groups

其中,参数 time_diff 是包含时间差的列表,k 是一个整数,表示分组的粒度。比如,当 k=7 时,按照每周分组;当 k=30 时,按照每月分组。

4. 统计销售数据

最后,我们可以根据分组结果,对销售数据进行统计分析了。这里使用了 Pandas 库,将分组结果和销售数据组合成 DataFrame,并使用 groupby() 方法对销售数据进行分组统计。

import pandas as pd

df = pd.DataFrame({'date': dates, 'sales': sales})
df['group'] = group_dates(time_diff, k=30)
df.groupby(['group'])['sales'].sum()
完整代码
from datetime import datetime, timedelta
import random
import pandas as pd

def group_dates(time_diff, k):
    groups = []
    for i in range(len(time_diff)):
        group = int(time_diff[i] / (k * 24 * 3600))
        groups.append(group)
    return groups

start_date = datetime(2021, 1, 1)
end_date = datetime(2021, 12, 31)
dates = [start_date + timedelta(days=i) for i in range((end_date-start_date).days+1)]

sales = [random.randint(100, 1000) for _ in range(len(dates))]
time_diff = [(date-start_date).total_seconds() for date in dates]

df = pd.DataFrame({'date': dates, 'sales': sales})
df['group'] = group_dates(time_diff, k=30)
df.groupby(['group'])['sales'].sum()
总结

本文介绍了如何使用 Python 对日期进行分组,并根据 K 数量的大小灵活控制分组的粒度。这里使用了 Python 内置的 datetime 模块生成日期列表,以及 Pandas 库进行分组统计,代码简洁清晰,易于理解和修改。