在Python中计算CSV列的百分比

0 投票
1 回答
2000 浏览
提问于 2025-04-16 13:07

我有一个关于用户记录工时的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}

撰写回答