2017-03-29 3 views
-2

나는 처음 5 행의 평균을 계산할 코드를 작성합니다. 그러나 처음에는 비어있는 행을 제거하는 방법을 생각할 수 없습니다. 다음은 내 코드의 스케치입니다. 미안해. 원시적이라면, 난 아직 초보자 야. 고마워!파이썬을 사용하여 CSV 파일에서 빈 행을 제거

import csv 
import statistics 
with open('Test.csv') as file: 
data=csv.reader(file,delimiter=',') 

sample1=[] 
sample2=[] 
sample3=[] 
sample4=[] 
sample5=[] 
#I was trying to do something like that but then 
#I receive error message that states that statistics.mean requires at least 
#one value. 
#(for row in data: 
    #if row: 
     #some=row[1]) 
for row in data: 

    sp1=row[0] 
    sample1.append(sp1) 
    sample1=[int(x) for x in sample1] 
    sp2=row[1] 
    sample2.append(sp2) 
    sample2=[int(x) for x in sample2] 
    sp3=row[2] 
    sample3.append(sp3) 
    sample3=[int(x) for x in sample3] 
    sp4=row[3] 
    sample4.append(sp4) 
    sample4=[int(x) for x in sample4] 
    sp5=row[4] 
    sample5.append(sp5) 
    sample5=[int(x) for x in sample5] 

mean1=statistics.mean(sample1) 
mean2=statistics.mean(sample2) 
mean3=statistics.mean(sample3) 
mean4=statistics.mean(sample4) 
mean5=statistics.mean(sample5) 
print(mean1) 
print(mean2) 
print(mean3) 
print(mean4) 
print(mean5) 

답변

1

여기에 그 일을하는 청소기 방법 :

import csv 
import statistics 

fromFile = [] 
with open('sample.csv','r') as fi: 
    data=csv.reader(fi,delimiter=',') 
    first = True 
    for row in data: 
     if first: 
      first = False 
      continue 
     if not filter(lambda a: a != '', row): 
      continue 
     fromFile.append(row) 
print statistics.mean([int(item[1]) for item in fromFile]) 

샘플 CSV 파일 :

name, age 
bob,9 
rachel,90 


,,,, 
joe,5 
+0

심지어 빈 문자열 및 활용 파이썬의 truthiness 메커니즘에 비해 건너 뛸 수 있습니다 :'하지 않을 경우 row.strip() : ' – leovp

+0

코드가 업데이트되었습니다. – Neil

+0

고마워요! 불행히도 '목록'개체에 '스트립'특성이 없다는 오류가 표시됩니다. – Joe

관련 문제