2012-02-27 8 views
1

그래서 각 파일에 6 열의 숫자가있는 여러 개의 CSV 파일이 있습니다. 파이썬을 사용하여 각 CSV 파일의 각 열에 대해 몇 가지 연산 (곱하기, 나눗셈 등)을 수행하고 싶습니다.파이썬을 사용하여 CSV 파일의 열을 곱하거나 나누십시오.

import csv 

r = csv.reader(open('F:\python\sample.csv','rb')) 

w = csv.writer(open('F:\python\sample_calib.csv','wb',buffering=0)) 

for row in r: 
      a = (float(row[0])-0.0376)/-0.0717 
      b = (float(row[1])-0.0376)/-0.0717 
      c = float(row[2])/1000 
      d = float(row[3])/1000 
      e = float(row[4])/1000000 
      f = float(row[5])/0.001178 
      w.writerow([a,b,c,d,e,f]) 

위의 작은 스크립트를 사용하여 각 행을 조정하면 각 .csv 파일에 문제가 없습니다. 이제 내가하고 싶은 일은 하나의 폴더에서 200 개의 파일에 대해이 스크립트를 실행하는 것입니다. 어떤 사람이 스크립트를 어떻게 편집해야하고 추가 할 모듈을 말해 줄 수 있습니까?

답변

3

당신은 csv 모듈에 익숙해 싶을 것이다 : http://docs.python.org/library/csv.html

+0

우연히 어떤 샘플 코드가 있습니까? –

+0

해당 페이지에 간단한 예제가 있습니다. http://docs.python.org/library/csv.html#csv.reader –

+0

위의 각 .csv 파일에 대해 사용하고있는 스크립트를 포함 시켰습니다. 스크립트를 편집하여 한 폴더에서 200 개의 파일을 실행하는 방법을 알려주십시오. –

0

을 각 컬럼의 배치 및 데이터 유형을 알고 가정 할 때, 가장 좋은 건 NumPyloadtxt 기능이 될 것입니다.

코드는 다음과 같이 보일 것이다 사용 :

import numpy as np 
dtype = np.format_parser(['f4', 'f4', 'i4'], ['col1', 'col2', 'col3'], []) 
array = np.loadtxt(path_to_file, dtype, delimiter=',') 

그런 다음이 같은 열 전체에 대한 작업을 수행 할 수 있습니다.

output = array['col1'] + array['col2'] 
f4

i4 및 각 열의 데이터 형식 장 - f4 32 비트 부동 소수점 숫자 및 i4 32 비트 정수이다. 다른 옵션은 64 비트 정수, 64 비트 부동 및 N 길이 문자열의 경우 i8, f8 또는 aN입니다.

주의 사항 - 데이터에 쉼표가 포함 된 문자열이 포함되어 있으면 loadtxt 함수가 잘 처리하지 못합니다. 이 경우 다른 포스터에서 권장하는대로 csv 모듈을 사용해야합니다.

관련 문제