2011-07-29 8 views
1

파이썬에서 csv 파일을 읽으려고하므로 numpy.average를 사용하는 열 중 하나에서 값의 평균을 찾을 수 있습니다.파이썬에서 csv 파일을 읽을 때의 정수

import os 
import numpy 
import csv 

listing = os.listdir('/path/to/directory/of/files/i/need') 
os.chdir('/path/to/directory/of/files/i/need') 


for file in listing[1:]:  
    r = csv.reader(open(file, 'rU')) 
    for row in r: 
     if len(row)<2:continue 
     if float(row[2]) <=0.05: 
      avg = numpy.average(float(row[2])) 
    print avg 

을하지만 오류 ValueError를 받고 계속 : 내 스크립트는 다음과 같습니다 플로트에 대한 잘못된 문자(). csv 리더는 숫자를 문자열로 읽는 것으로 보이며이를 float로 변환 할 수 없습니다. 어떤 제안?

+0

스크립트가 초크 값을 포함하는 샘플을 csv 파일에서 제공 할 수 있습니까? – thegrinner

+0

빈 문자열을 전달 했으므로 간단한 체크를 추가해야합니다. '행 [2]. 스트립() 및 플로트 (행 [2]) <= 0.05 :' –

+0

@Artisom : 이 경우 "float()"에 대한 유효하지 않은 리터럴 대신 "빈 문자열 for float()"이 표시됩니다. –

답변

2

의견으로 판단, 당신의 프로그램은 헤더 문제로 실행됩니다.

이 두 가지 해결 방법은 for 루프 앞에있는 줄을 건너 뛰거나 DictReader 클래스를 사용하는 r.next()을 사용하는 것입니다. DictReader 클래스의 장점은 터플 대신 사전에 각 행을 처리 할 수 ​​있기 때문에 경우에 따라 가독성이 향상 될 수 있지만 생성자에서 헤더 목록을 전달해야한다는 것입니다.

0

변화 :

float(row[2]) 

에 :

float(row[2].strip("'\"")) 
관련 문제