【问题标题】:Calculate percentage of a csv column in python计算python中csv列的百分比
【发布时间】:2011-03-06 20:07:59
【问题描述】:

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

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

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

我现在想要的是使用用户的总小时数来计算项目时间占总时间的百分比。例如,ProjectA 在 User1 时间的百分比是多少?谁能帮忙,我一直在努力解决这个问题,但到目前为止还没有。我对 python 很陌生,所以非常感谢任何提示或帮助。

提前致谢!

【问题讨论】:

  • 想一想:如果您将数据存储在实际数据库中,这将非常容易。

标签: python csv


【解决方案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}

【讨论】:

    猜你喜欢
    • 2022-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-23
    • 2023-02-01
    • 2021-10-17
    • 1970-01-01
    • 2017-03-28
    相关资源
    最近更新 更多