我需要找到与每个键相关的所有整数的中位数(AA,BB)。我的代码导致的基本格式:
AA - 21
AA - 52
BB - 3
BB - 2
我的代码:
def scoreData(filename):
d = dict()
fin = open(filename)
contents = fin.readlines()
for line in contents:
parts = linesplit()
part[i] = int(part[1])
if parts[0] not in d:
d[parts[0]] = list(parts[1])
else:
d[parts[0]].append(parts[1])
names = list(d.keys())
names.sort() #alphabeticez the names
print("Name\+Max\+Min\+Median")
for name in names: #makes the table
print (name"\+", max(d[name]),\+min(d[name]),"\+"median(d[name]))
我害怕遵循与“names”相同的格式,“names.sort”将完全重构数据。我已经考虑过“从统计导入中位数”,但我再一次不知道如何只选择与每个相同键相关联的值。
提前致谢
答案 0 :(得分:1)
您可以使用pandas
和numpy
轻松完成:
import pandas
import numpy as np
并按第一行汇总:
score = pandas.read_csv(filename, delimiter=' - ', header=None)
print score.groupby(0).agg([np.median, np.min, np.max])
返回:
1
median amin amax
0
AA 36.5 21 52
BB 2.5 2 3
答案 1 :(得分:0)
您可以采用许多很多方式。但这里有一个天真的'将完成工作的实施。
假设您的数据如下:
AA 1
BB 5
AA 2
CC 7
BB 1
您可以执行以下操作:
import numpy as np
from collections import defaultdict
def find_averages(input_file)
result_dict = defaultdict(list)
for line in input_file.readlines()
key, value = line.split()
result_dict[key].append[int(value)]
return [(key, np.mean(value)) for key,value in result_dict.iteritems()]