如何编写一个Python程序来计算.dat文件的平均值?

时间:2012-03-17 07:33:41

标签: statistics

到目前为止,我有这个,但我不知道如何写.dat文件:

def main():
   fname = input("Enter filename:")
   infile = open(fname, "r")
   data = infile.read()
   print(data)

for line in infile.readlines():
    score = int(line)
    counts[score] = counts[score]+1
    infile.close()

total=0
for c in enumerate(counts):
    total = total + i*c
    average = float(total)/float(sum(counts))
print(average) 
main()

这是我的.dat文件:

4
3
5
6
7

我的统计学教授希望我们学习Python来计算平均值和标准差。所有我需要知道的是如何做到这一点,然后我已经弄明白了。我想知道Python如何写入.dat文件中的每一行。有人能告诉我如何修复此代码吗?我以前从未做过编程。

2 个答案:

答案 0 :(得分:0)

fname = input("Enter filename:")
infile = open(fname, "r")
data = infile.readline() #Reads first line
print(data)
data = infile.readline() #Reads second line
print(data)

你可以把它放在一个循环中。

此外,这些值将在Strings每次使用float(data)将其转换为浮点数时出现。

另外,StackOverflow的那些人并没有你想象的那么糟糕。这可以很容易地在那里得到解答。 (也许是以更好的方式)

答案 1 :(得分:0)

按照我的理解回答你的问题,分三部分:

如何阅读

中的文件

在您的示例中使用

  

infile.read()

将文件的全部内容读入字符串并将您带到文件末尾。因此以下

  

infile.readlines()

将不再阅读。你应该省略第一个read()。

如何计算平均值

在python中有很多方法可以做到这一点 - 或多或少是优雅的 - 而且我想这完全取决于问题所在。但在最简单的情况下,您可以随时对值进行求和,然后在结尾处除以计数得到结果:

infile = open("d.dat", "r")
total = 0.0
count = 0
for line in infile.readlines():    
    print ("reading in line: ",line)
    try:
        line_value = float(line)
        total += line_value
        count += 1
        print ("value = ",line_value, "running total =",total, "valid lines read = ",count)
    except:
        pass #skipping non-numeric lines or characters

infile.close()

try / except部分是为了防止文件中的行或字符无法转换为浮点数,这些将被跳过。

如何写入.dat文件

最后,您似乎在询问如何将结果写回d.dat文件。不确定您是否真的需要这样做,只需在上面的代码中显示结果即可。但是,如果你确实需要将它写回同一个文件,只需在读取后将其关闭,重新打开它进行写入(在'append'模式下输出到文件的末尾),然后使用write输出结果( )。

outfile = open("d.dat","a")
outfile.write("\naverage = final total / number of data points = " + str(total/count)+"\n")
outfile.close()