在Python中计算CSV列的百分比
我有一个关于用户记录工时的csv文件,内容大致如下,但文件要大得多(用户和项目更多):
用户,项目,工时
用户1,项目A,5
用户1,项目B,10
用户2,项目A,7
用户2,项目B,12
我已经写了一些代码,目前可以打印出所有用户的总工时。它还可以打印出某个用户的数据,以及该用户的总工时。
我现在想要做的是,利用某个用户的总工时,来计算某个项目在总工时中所占的百分比。比如,项目A在用户1的工时中占多少百分比?有没有人能帮我,我一直在尝试解决这个问题,但到现在还没搞明白。我对python还很陌生,所以任何提示或帮助都非常感谢。
提前谢谢大家!
1 个回答
1
import csv
import collections
with open(<...>) as data_file:
total_hours = collections.defaultdict(int)
for row in csv.DictReader(data_file):
total_hours[row['User']] += int(row['Hours'])
或者你可以把数据读进一个字典,格式是用户 -> 项目 -> 时间,然后就可以使用这个字典了:
import functools
with open(<...>) as data_file:
data = collections.defaultdict(
functools.partial(collections.defaultdict, int))
for row in csv.DictReader(data_file):
data[row['User']][row['Project']] += int(row['Hours'])
然后
total_hours = {user: sum(time.values()) for user, time in data}