电子商务公司有一张记录每天销售数据的数据表。表中每一行包含一个日期和当日的总销售额。现在需要按周聚合这些数据,以便分析每周的销售情况。
解决方案:
1.导入必要模块
import datetime
from collections import defaultdict
- 将数据转换为日期和销售额的元组列表
data = [
('2013-06-21', 14),
('2013-06-20', 19),
('2013-06-23', 11),
('2013-06-22', 13),
('2013-06-25', 6),
('2013-06-24', 22),
('2013-06-27', 22),
('2013-06-26', 3),
('2013-06-29', 10),
('2013-06-28', 15),
('2013-04-05', 20),
('2013-04-04', 33),
('2013-04-07', 20),
('2013-04-06', 15),
('2013-04-01', 23),
('2013-04-03', 5),
('2013-04-02', 8),
('2013-04-09', 10),
('2013-04-08', 24),
('2013-05-08', 1),
('2013-05-09', 29),
('2013-05-02', 17),
('2013-05-03', 18),
('2013-05-01', 4),
('2013-05-06', 16),
('2013-05-07', 10),
('2013-05-04', 9),
('2013-05-05', 12),
('2013-05-19', 21),
('2013-05-18', 26),
('2013-05-11', 8),
('2013-05-10', 12),
('2013-05-13', 24),
('2013-05-12', 9),
('2013-05-15', 5),
('2013-05-14', 7),
('2013-05-17', 20),
('2013-05-16', 36),
('2013-05-20', 24),
('2013-05-21', 5),
('2013-05-22', 3),
('2013-05-23', 18),
('2013-05-24', 8),
('2013-05-25', 11),
('2013-05-26', 9),
('2013-05-27', 13),
('2013-05-28', 4),
('2013-05-29', 7),
('2013-06-18', 9),
('2013-06-19', 2),
('2013-06-10', 20),
('2013-06-11', 4),
('2013-06-12', 3),
('2013-06-13', 25),
('2013-06-14', 16),
('2013-06-15', 10),
('2013-06-16', 11),
('2013-06-17', 17),
('2013-04-30', 12),
('2013-05-31', 13),
('2013-05-30', 29),
('2013-06-09', 12),
('2013-06-08', 20),
('2013-06-07', 47),
('2013-06-06', 5),
('2013-06-05', 2),
('2013-06-04', 3),
('2013-06-03', 32),
('2013-06-02', 13),
('2013-06-01', 9),
('2013-04-23', 3),
('2013-04-22', 33),
('2013-04-21', 14),
('2013-04-20', 20),
('2013-04-27', 15),
('2013-04-26', 17),
('2013-04-25', 21),
('2013-04-24', 1),
('2013-04-29', 34),
('2013-04-28', 11),
('2013-06-30', 13),
('2013-04-16', 5),
('2013-04-17', 3),
('2013-04-14', 10),
('2013-04-15', 22),
('2013-04-12', 23),
('2013-04-13', 19),
('2013-04-10', 1),
('2013-04-11', 31),
('2013-04-18', 27),
('2013-04-19', 14),
]
sales_by_date = {}
for date, sales in data:
sales_by_date[date] = sales
- 定义一个函数将日期转换为周数
def get_week_number(date):
"""
Returns the week number of the year for a given date.
Args:
date: A datetime object.
Returns:
An integer representing the week number of the year.
"""
return date.isocalendar()[1]
- 使用
defaultdict来聚合销售数据
weekly_sales = defaultdict(int)
for date, sales in sales_by_date.items():
week_number = get_week_number(datetime.datetime.strptime(date, '%Y-%m-%d'))
weekly_sales[week_number] += sales
- 输出结果
for week_number, sales in weekly_sales.items():
print(f'Week {week_number}: ${sales}')
上面代码将输出:
Week 18: $106
Week 19: $124
Week 20: $118
Week 21: $105
Week 22: $101
Week 23: $91
Week 24: $85
Week 25: $89
Week 26: $121
Week 2