在Python中,如何从逗号分隔格式的文件中找到某个键的平均值?
那么我怎样才能从文件中找到平均值呢。我是python新手 我的文件如下所示: dog,3 dog,11 cat,3 cat,4 cat,15在Python中,如何从逗号分隔格式的文件中找到某个键的平均值?,python,Python,那么我怎样才能从文件中找到平均值呢。我是python新手 我的文件如下所示: dog,3 dog,11 cat,3 cat,4 cat,15 首先,将计算分数的代码移动到if order=='alphastical':行之前,以便默认情况下计算该代码并在函数的其余部分中可用 现在,您可以执行以下操作: cat_list = [i[1] for i in scores if i[0]=='cat'] print(sum(cat_list)/len(cat_list)) 这将解析[('cat',3
首先,将计算
分数的代码移动到if order=='alphastical':
行之前,以便默认情况下计算该代码并在函数的其余部分中可用
现在,您可以执行以下操作:
cat_list = [i[1] for i in scores if i[0]=='cat']
print(sum(cat_list)/len(cat_list))
这将解析[('cat',3),('dog',4),('cat',2)]
的分数
,以打印2.5的平均值制作列表词典
def get_dictionary():
handle = open("file_with_cats_n_dogs", "rb")
d = {}
for line in handle:
key, number = line.strip().split(",")
if key in d:
d[key] += [float(number)]
else:
d[key] = [float(number)]
return d
然后你可以做:
def get_avg(numbers_dict, key):
avg = sum(numbers_dict[key])/len(numbers_dict[key])
return avg
您可以定义一个如下所示的函数,并使用它来找出狗、猫等项目的平均值
import csv
ef_file = open('e_form.txt')
def avg(fileHnadler,avgFor):
csv_rows = csv.reader(fileHnadler)
count=total=0
for row in csv_rows:
if row[0]==avgFor:
total += float(row[1])
count += 1
if count!=0:
return total/count
else:
return 'No Data in File'
然后您可以调用如下所示的函数
cat_avg = avg(ef_file,'cat')
在您的情况下,正如您正在代码中打开文件一样。因此,您只需使用适当的参数/参数调用此函数,即可获得所需的平均值。…使用包含每个键的值的列表即可构造。简化了文件中数据的处理,将其拆分为单独的字段并剥离新行字符。然后,可以通过迭代字典中的项,对每个列表求和并除以列表长度来计算每个键的平均值。代码如下:
import csv
from collections import defaultdict
with open('file.txt') as f:
pets = defaultdict(list)
for row in csv.reader(f):
pets[row[0]].append(float(row[1]))
for pet, values in pets.items():
print('{}: {:.2f}'.format(pet, sum(values) / len(values)))
输出
dog: 7.00
cat: 7.33
狗:7.00
猫:7.33
那么,你的代码有什么问题呢?最好对问题进行适当的格式设置,以便更多的人愿意关注你的问题。我改进了你的格式。如果您共享代码,那么您需要描述它当前的行为方式,而不是您希望它的行为方式。谢谢您的帮助。
dog: 7.00
cat: 7.33