【发布时间】:2018-07-06 12:22:58
【问题描述】:
给出的内容:
- 办公室由 3 种类型的建筑物组成:A 楼、B 楼、C 楼。
- 员工在 3 个部门工作:IT、营销、管理
- 有一个通行证系统,记录时间、部门、建筑类型、性别(男/女)
目标是计算每 30 分钟片段中每个部门建筑类型对的男性员工数量。
这是要处理的一段 CSV 数据:
time,department,building_type,gender
2017-09-07 14:46:14,018,management,b,m
2017-09-07 14:49:14,081,it,a,m
2017-09-07 14:55:14,127,management,c,f
2017-09-07 15:40:16,318,marketing,c,m
2017-09-07 16:01:14,018,it,a,m
2017-09-07 16:10:14,081,it,a,m
2017-09-07 17:46:14,127,marketing,c,m
2017-09-07 17:49:16,318,management,c,m
2017-09-07 18:00:14,018,it,c,f
2017-09-07 18:02:14,081,management,a,m
2017-09-07 18:33:14,127,marketing,b,m
2017-09-07 18:56:16,318,marketing,a,m
处理的主要时间段是 2017-09-07 14:46:14,018 到 2017-09-07 18:56:16,318。
-
应在此主要时间段内定义 30 分钟段,并应每 30 分钟段计算每个部门建筑类型对的男性雇员人数。
输出应包含一列
start_time,表示应计算每个部门建筑对的男性员工数量的 30 分钟段的开始。输出应显示在终端(不需要csv格式)
输出示例:
start_time,department,building_type,num_of_m_employees
2017-09-07 14:46:14,018,management,b,2
2017-09-07 14:46:14,018,it,a,1
2017-09-07 15:40:16,318,marketing,c,1
2017-09-07 15:40:16,318,it,a,2
2017-09-07 17:46:14,127,marketing,c,1
2017-09-07 17:46:14,127,management,a,1
2017-09-07 18:33:14,127,marketing,b,1
2017-09-07 18:33:14,127,marketing,a,1
我编写了一个程序,该程序通常计算每个部门建设对的男性员工人数,但我不能对每个 30 分钟的部分都做同样的事情。我该如何编辑它?:
import csv
from collections import Counter
with open('test.csv') as f:
cnt = Counter()
reader = csv.reader(f)
for row in reader:
if row[3] == "m":
cnt[row[2], row[3]] += 1
print(cnt)
【问题讨论】:
-
感谢您在问题细节和格式方面所做的努力,但下次请展示您在 30 分钟片段上的尝试
-
我还建议阅读有关如何正确使用 Counter 的文档。