计算python中csv列的百分比

时间:2011-03-06 20:08:00

标签: python csv

我有这个csv文件关于用户的记录小时数看起来大致相同,但它更大(更多的用户和项目):

用户,项目,小时
    用户1,项目A,5
    用户1,项目B,10
    用户2,项目A,7
    用户2,项目B,12

我已完成一些代码,现在打印所有用户的总记录小时数。它还仅打印来自一个用户的数据,以及该用户的总小时数。

我现在想要的是使用用户的总小时数来计算项目时间占总数的百分比。例如,Project1在User1上的百分比是多少?任何人都可以提供帮助,我一直试图解决这个问题,但到目前为止还没有。我对python很新,所以任何提示或帮助都非常感激。

提前致谢!

1 个答案:

答案 0 :(得分: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'])

或者您可以将数据读入字典用户 - &gt;项目 - &gt;时间和用途:

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}