在一个简单的csv文件中分解列

时间:2018-11-04 09:16:31

标签: python

我的csv文件如下所示:

Test Number,Score 
1,100 2,40 3,80 4,90. 

我一直在尝试找出如何编写忽略标题+第一列并专注于分数的代码的方法,因为作业是查找测试分数的平均值并打印出浮点数(对于那些特定的数字,输出应该是77.5)。我在网上看了看,发现了一些我认为可以解决的问题,但每次都遇到错误。正在学习有关读取,区域,拆分,rstrip和\ n的信息,如果有帮助的话!我敢肯定答案很简单,但是我是编码的新手,我不知道自己在做什么。谢谢!

def computeTestAverage(fileName):     myFile = open(fileName,“ r”)     列= myFile.readline()。rstrip(“ \ n”)     对于myFile中的列:         scoreColumn = column.split(“,”)         (scoreColumn [1])

到目前为止,这是我的代码,我的教授希望我们定义一个函数,并使用在课堂上学到的东西从那里开始。我被困住了,因为它会在单独的返回行上打印出我需要的所有分数,但是我不能在没有错误的情况下对这些分数求和。感谢您的所有帮助,我认为我将无法使用任何建议,因为我们从来没有考虑过它们。如果有人对如何将那些垂直列为列的测试成绩进行汇总并进行汇总加以总结,这将对我有所帮助!

3 个答案:

答案 0 :(得分:0)

您可以使用csv库。这段代码可以完成工作:

import csv
reader = csv.reader(open('csvfile.txt','r'), delimiter=' ')
reader.next() # this line lets you skip the header line


for row_number, row in enumerate(reader):
   total_score = 0
   for element in row:
      test_number, score = element.split(',')
      total_score += score
   average_score = total_score/float(len(row))
   print("Average score for row #%d is: %.1f" % (row_number, average_score))

输出应如下所示:

  

第1行的平均得分是:77.5

答案 1 :(得分:0)

我总是用熊猫数据框来解决这个问题。特别是read_csv()函数。您无需忽略标题,只需声明其位于第0行(例如),然后与行标签相同即可。 例如:

import pandas as pd
import numpy as np
df=read_csv(“filename”,header=0,index_col=0)
scores=df.values 
print(np.average(scores))

答案 2 :(得分:0)

我将为您分解。

由于您正在处理.csv文件,因此建议您使用csv库。您可以使用以下命令导入它:

import csv

现在我们需要open()文件。一种常见的方法是使用with

with open('test.csv') as file:

这是一个上下文管理器,可以避免最终关闭文件。另一个选项是正常打开和关闭:

file = open('test.csv')
# Do your stuff here
file.close()

现在,您需要用csv.reader()包装打开的文件,这使您可以读取.csv文件并对其进行处理:

csv_reader = csv.reader(file)

要跳过标题,可以使用next()

next(csv_reader)

现在是平均值计算部分。一种简单的方法是拥有两个变量score_sumtotal。目的是分别增加这两个变量的分数和总计。这是一个示例片段:

score_sum = 0
total = 0
for number, score in csv_reader:
    score_sum += int(score)
    total += 1

以下是使用索引编制的方法:

score_sum = 0
total = 0
for line in csv_reader:
    score_sum += int(line[1])
    total += 1

现在我们已经计算出了分数和总数,得到平均值很简单:

score_sum / total

上面的代码组合起来将平均得到77.5

当然,所有这些都假定您的.csv文件实际上是这种格式:

Test Number,Score 
1,100 
2,40 
3,80 
4,90