2014-07-09 3 views
1

일련의 실험에서 데이터를 처리해야합니다.파이썬에서의 실험적 측정 처리

experiment1.csv :

time, sensor1, sensor2, sensor3 
0, 1.3, 4.7, 2.9, 6.6 
1, 2.8, 7.1, 4.2, 1.1 
. 
. 

experiment2.csv

time, sensor1, sensor3, sensor6 
0, 3.8, 7.1, 2.2, 1.1 
1, 1.6, 4.1, 14.1, 3.7 
. 
. 

나는를 orginize 할 필요가 각각의 실험은 예를 들어, 'CSV'파일에 여러 센서 측정을 가지고 데이터를 사용하여 실험 간의 측정 값을 쉽게 비교할 수 있습니다. 예를 들어, 실험 1에서 센서 1에 의해 측정 된 값을 실험 2에서 센서 6으로 측정 된 값에서 빼고 시간의 함수로 그 차이를 플로팅 할 수 있습니다.

는 지금은 데이터

exp1 = pd.read_csv('experiment1.csv') 
exp2 = pd.read_csv('experiment2.csv') 

diff = exp1['sensor1'] - exp2['sensor3'] 
plot(exp1['time'],diff) 

내가 가서 수동으로 내가 다른 실험을 추가 할 때 새 데이터 프레임을 생성해야하기 때문에이 성가신 작업을 판다 데이터 프레임을 사용하고 있습니다. 일반적으로 나는 50 개의 시험에서 동시에 데이터로 작업 할 수 있으며, 설명 된 방법은 잘 확장되지 않습니다.

이상적으로 나는 실험 지정자와 센서 번호로 참조 할 수있는 각 파일의 데이터 프레임을 만드는 임의의 수의 데이터 파일로 디렉토리에서 실행할 수있는 스크립트를 갖고 싶습니다.

모든 경우에 'pd.read_csv'명령을 수동으로 추가하지 않고 위의 코드를 수정하여 디렉토리의 각 파일에 대한 데이터 프레임을 만들 수있는 방법이 있습니까?

감사합니다.

답변

0

실제로 관심있는 내용은 os 라이브러리입니다. 구체적으로는 listdir입니다.

그러나 그 동안 모든 측정치를 하나의 데이터 프레임으로 결합하지 않는 것이 어떻습니까? 열을 추가하거나 MultiIndex의 레벨로 추가 할 수 있습니다. 내가 필요 정확히 무엇을

import os 
import pandas as pd 
directory_contents = os.listdir(your_directory) 
experiment_files = [fn for fn in directory_contents if '.csv' in fn] 
df = pd.DataFrame() 

for filename in experiment_files: 
    experiment_df = pd.read_csv(filename) 
    experiment_df['experiment_name'] = file_name 
    df = pd.concat([df,experiment_df]) 
+0

:

여기에 열 방법입니다! 감사! – user3818634