2016-11-22 2 views
0

저는 Python의 초보자입니다. 내 문제에 대해 조사했지만 정확한 요구 사항을 찾을 수 없습니다.Python을 사용하여 여러 csv 파일의 각 열의 평균을 취하십시오.

각 실험 측정에 대해 점수가 매겨진 파일이 여러 개인 폴더가 있습니다. 그들의 이름은 추세를 따릅니다. XY0001.csv, XY0002.csv ... XY0040.csv. 나는이 모든 파일을 읽고 모든 파일의 각 열의 평균을 취하여 'result.csv'에 같은 형식으로 저장하려고합니다.

+0

[여러 csv 파일을 팬더로 가져 와서 하나의 DataFrame으로 연결할 수 있음] 가능한 복제본 (http://stackoverflow.com/questions/20906474/import-multiple-csv-files-into-pandas-and-concatenate-into- 하나의 데이터 프레임) – Guido

답변

1

팬더 (import pandas as pd)를 사용하는 것이 좋습니다. 먼저 pd.read_csv()을 사용하여 파일을 읽는 것이 좋습니다. 파일을 정확히 읽는 방법은 CSV 파일의 형식에 따라 달라 지지만 여기서는 그 사실을 알 수 없습니다. 디렉터리에있는 모든 파일 (이 문제에 대한 가장 쉬운 해결책 일 수 있음)을 읽으려면 read all files을 사용해보십시오.

그런 다음 pd.concat()을 사용하여 모든 파일을 연결할 수 있습니다. 마지막으로 생성하려는 메트릭을 계산할 수 있습니다 (검색 기능을 사용하여 각 특정 메트릭을 계산하는 방법을 찾습니다). 당신을 위해 많은 것을하는 좋은 기능은 describe function입니다.

0

다음은 glob 모듈을 사용하여 X*.csv 형태의 현재 폴더에있는 모든 파일 목록, 즉 x으로 시작하는 모든 CSV 파일의 목록을 가져옵니다. 발견 된 각 파일에 대해 헤더 행 (선택 사항)을 건너 뛴 다음 zip() 트릭을 사용하여 나머지 모든 행을로드하여 행 목록을 열 목록으로 조 변경합니다.

각 열에 대해 각 셀을 정수로 변환하고 값의 합계를 발견 한 요소 수로 나누어 각 열의 평균을 제공합니다. 다음과 같이

Col1,Col2,Col3 
6,1,10 
2,1,20 
5,2,30 

result.csv이 기록 될 것입니다 : 당신이 포함 XY0001.csv이 있다면 그래서

import glob 
import csv 

with open('result.csv', 'w', newline='') as f_output: 
    csv_output = csv.writer(f_output) 

    for filename in glob.glob('X*.csv'): 
     print (filename) 

     with open(filename, newline='') as f_input: 
      csv_input = csv.reader(f_input) 
      header = next(csv_input) 
      averages = [] 

      for col in zip(*csv_input): 
       averages.append(sum(int(x) for x in col)/len(col)) 

     csv_output.writerow([filename] + averages) 

: 그런 다음 형식 filename, av_col1, av_col2 등에 출력 result.csv에 값을 기록

XY0001.csv,4.333333333333333,1.3333333333333333,20.0 

Python 3.5.2를 사용하여 테스트 됨

0

여러 파일에 액세스하려면 glob 모듈을 사용할 수 있습니다.

import glob 

path =r'/home/root/csv_directory' 
filenames = glob.glob(path + "/*.csv") 

파이썬의 pandas 모듈은 csv 파일을 구문 분석하는 방법이있다. 또한 csv 파일을 관리하고 처리하는 몇 가지 옵션이 있습니다.

import pandas as pd 

dfs = [] 
for filename in filenames: 
    dfs.append(pd.read_csv(filename)) 

.read_csv() 구문 분석 csv 파일에는 메서드가 사용됩니다. 하나 dataframe 처리하기위한 쉬운에 모든 데이터를 연결하는 데 사용

pd.concat(dfs, ignore_index=True) 

.concat()

.