在文本文件中,有一个名称旁边的数字列表,表示在这种情况下的得分。有没有办法弄清楚文本文件中所有数字的平均值。
代码:
print("average calculator")
option = input("option: ")
option_class = input("class: ")
one = "1.txt"
if option.lower() == 'avg' and option_class == '1':
name = input("name: ")
with open(one) as f:
the_list = [int(l.strip().split()[-1]) for l in f if name in l]
b = sum(the_list)
length = len(the_list)
avg = float(b) / length if length else 0
print (name,"Average is: ", avg)
代码向用户询问其名称的部分,此处它会查找文本文件中名称旁边的所有数字,但是我尝试删除此方面并允许代码识别所有数字文件...
文字档案:
Matt 3
Jhon 4
Alex 6
根据这些数字,[3,4,6]应该算出平均值,NB:可以附加文本文件,可以添加更多名称和分数。
TIA!
答案 0 :(得分:0)
尝试pandas库。
某些内容:
import pandas as pd
df = pd.read_csv('filename.txt', delimiter=' ')
df['Column name'].mean()
它具有轻松过滤和分组数据的功能,对于此类任务比编写自己的代码更有用。我使用文件100,000行+,可以读取,分组,过滤每组中的异常值,并在大约4行代码中计算统计数据。
答案 1 :(得分:0)
列表理解:
the_list = [int(l.strip().split()[-1]) for l in f if name in l]
等效:
with open(one) as f:
the_list = [] # creating empty list or (array)
for l in f: # treversing over the lines in file
if name in l: # if input name is in the line do next line
the_list.append(int(l.strip().split()[-1])) # adding element to list
else: # if input name is not in line ignore the line dont use the score
pass