【问题标题】:How to normalize percentages in python如何在python中标准化百分比
【发布时间】:2015-04-30 02:23:44
【问题描述】:

我有一个 Python 字典列表,表示国家代码和不同服务器的命中百分比。

[{'country': 'BR', 'values': {'Server1': [100.0, 100.0]}},
 {'country': 'IE', 'values': {'Server1': [61.7868], 'Server2': [38.2132]}},
 {'country': 'US', 'values': {'Server1': [82.19], 'Server2': [100.0]}}]

我想将其转换为保持百分比不变的单个值。所以我将列表中的值加起来,然后除以它们的长度,如

for key_dict in resp:
averages = {}
for name, numbers in key_dict['values'].items():
    averages[name] = sum(numbers) / len(numbers)
key_dict['values'] = averages

但在大多数情况下,这并不能算出正确的百分比。例如,上述解决方案将导致。

[{'country': 'BR', 'values': {'Server1': [100.0]}},
 {'country': 'IE', 'values': {'Server1': [61.7868], 'Server2': [38.2132]}},
 {'country': 'US',
  'values': {'Server1': [100.0, 92.8571, 100.0, 100.0, 18.1078],
             'Server2': [100.0, 100.0]}}]

很明显 'USsum both theServer1andServer2` 超过 100 。我如何在python中清楚地划分百分比。

【问题讨论】:

  • 我上次检查的时候,100.0和82.19都没有超过100。请您澄清一下问题
  • 总和超过 100 ,理想情况下两台服务器的总和应为 100 以获得百分比拆分。
  • 你能澄清一下这个问题吗?为什么国家'BR''Server1' 的值有两个值,而其他所有值都为1?您能否为我们提供的示例输入提供您想要的示例输出

标签: python math numpy dictionary percentage


【解决方案1】:

如果我理解正确,您首先要计算服务器内的平均百分比。然后,您希望修改该平均值以代表给定国家/地区内所有服务器的平均时间。因此,对于“BR”,您可以将该平均值除以 1 个服务器,但对于其他两个,您将除以 2 个服务器。这可以通过执行以下操作来完成:

resp = [{"country": "BR", "values": {"Server1": [100.0, 100.0]}},
    {"country": "IE", "values": {"Server2": [38.2132], "Server1": [61.7868]}},
    {"country": "US", "values": {"Server2": [100.0, 100.0],
    "Server1":[100.0, 92.8571, 100.0, 100.0, 18.1078]}}]

for d in resp:
    num_severs = len(d['values'])
    for s in d['values']:
        # Calculate average pct for each server
        avg_pct = sum(d['values'][s]) / len(d['values'][s])

        # Equalize the average
        d['values'][s] = avg_pct / num_severs

这会将resp 修改为:

[{'country': 'BR', 'values': {'Server1': 100.0}}, {'country': 'IE', 'values': {'Server1': 30.8934, 'Server2': 19.1066}}, {'country': 'US', 'values': {'Server1': 41.09649, 'Server2': 50.0}}]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-18
    • 1970-01-01
    • 2021-05-04
    • 2021-02-04
    • 1970-01-01
    相关资源
    最近更新 更多