2017-03-29 22 views
-2

私は最初の5行の平均を計算するコードを作成しています。しかし、最初は空のままにしておけば行を削除する方法は考えられません。ここに私のコードのスケッチです。申し訳ありませんが、原始的な場合、私はまだ初心者です。ありがとう!ここでPythonを使用して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

あなたも、空の文字列とレバレッジPythonのtruthiness機構に比べスキップすることができます: 'ていない場合row.strip(): ' – leovp

+0

コードを更新しました。 – Neil

+0

ありがとう!残念ながら、私は、 'リスト'オブジェクトに属性 'ストリップ'がないというエラーを受け取りました。 – Joe

関連する問題