📅  最后修改于: 2023-12-03 15:39:48.451000             🧑  作者: Mango
在软件开发中,经常需要按照时间进行数据分组和统计,其中按周时间分组是一种常见的方式。本文将介绍如何在Python中使用pandas库进行按周时间分组。
首先需要安装pandas库,可以使用pip命令进行安装:
pip install pandas
为了方便演示,这里定义了一个示例数据集,包含日期和销售额两列。
import pandas as pd
data = {
'date': ['2021-09-01', '2021-09-02', '2021-09-03', '2021-09-04', '2021-09-05', '2021-09-06', '2021-09-07', '2021-09-08', '2021-09-09', '2021-09-10', '2021-09-11', '2021-09-12', '2021-09-13', '2021-09-14', '2021-09-15', '2021-09-16', '2021-09-17', '2021-09-18', '2021-09-19', '2021-09-20', '2021-09-21', '2021-09-22', '2021-09-23', '2021-09-24', '2021-09-25', '2021-09-26', '2021-09-27', '2021-09-28', '2021-09-29', '2021-09-30'],
'sales': [100, 200, 300, 400, 500, 600, 700, 800, 900, 1000, 1100, 1200, 1300, 1400, 1500, 1600, 1700, 1800, 1900, 2000, 2100, 2200, 2300, 2400, 2500, 2600, 2700, 2800, 2900, 3000]
}
df = pd.DataFrame(data)
要按周时间分组,首先需要将日期转换成 datetime 类型,并将其设置为索引:
df['date'] = pd.to_datetime(df['date'])
df.set_index('date', inplace=True)
然后使用 resample() 方法进行按周分组,以每周的星期一为起点:
weekly_sales = df.resample('W-MON').sum()
最后,我们来看一下按周时间分组的结果,以 markdown 表格的形式展示:
| date | sales |
|:--------------------|--------:|
| 2021-09-06 00:00:00 | 2100 |
| 2021-09-13 00:00:00 | 6300 |
| 2021-09-20 00:00:00 | 10500 |
| 2021-09-27 00:00:00 | 14800 |
| 2021-10-04 00:00:00 | 3000 |
最后,将上述所有代码整合起来,得到完整的按周时间分组的代码:
import pandas as pd
data = {
'date': ['2021-09-01', '2021-09-02', '2021-09-03', '2021-09-04', '2021-09-05', '2021-09-06', '2021-09-07', '2021-09-08', '2021-09-09', '2021-09-10', '2021-09-11', '2021-09-12', '2021-09-13', '2021-09-14', '2021-09-15', '2021-09-16', '2021-09-17', '2021-09-18', '2021-09-19', '2021-09-20', '2021-09-21', '2021-09-22', '2021-09-23', '2021-09-24', '2021-09-25', '2021-09-26', '2021-09-27', '2021-09-28', '2021-09-29', '2021-09-30'],
'sales': [100, 200, 300, 400, 500, 600, 700, 800, 900, 1000, 1100, 1200, 1300, 1400, 1500, 1600, 1700, 1800, 1900, 2000, 2100, 2200, 2300, 2400, 2500, 2600, 2700, 2800, 2900, 3000]
}
df = pd.DataFrame(data)
# 将日期转换为 datetime 类型,并将其设置为索引
df['date'] = pd.to_datetime(df['date'])
df.set_index('date', inplace=True)
# 按周时间分组
weekly_sales = df.resample('W-MON').sum()
# 展示结果
print(weekly_sales.to_markdown())