2014-10-07 8 views
-1

모든 가능한 비율 조합에 대해 "Measured_Power"의 최소, 최대, 평균 값을 찾으려고합니다. 나는 많은 속도와 주파수를 가지고있다 (10 개의 속도, 10 개의 주파수).파이썬에서 CSV 파일의 최소값을 찾으십시오.

Channel, Rate, Length, Frequency, Expected_Power, Measured_Power, Expected_Eq, Measured_Eq, 
A, 27, 1000, 100, 20, 20.16, <-23.0, -27.33, 
A, 6, 1000, 100, 20, 20.12, <-23.0, -25.96, 
A, 3, 1000, 100, 20, 20.05, <-23.0, -26.34, 
A, 27, 1000, 101, 20, 20.11, <-23.0, -24.88, 
A, 6, 1000, 101, 20, 20.26, <-23.0, -25.55, 
A, 3, 1000, 101, 20, 20.08, <-23.0, -25.42, 
B, 27, 1000, 100, 20, 20.5, <-23.0, -26.98, 
B, 6, 1000, 100, 20, 20.21, <-23.0, -24.61, 
B, 3, 1000, 100, 20, 20.17, <-23.0, -23.54, 
... 

나는 시도했다 : : 내 CSV 파일과 같은

import numpy 

file = r'C:\data.csv' 
c = numpy.genfromtxt(file,dtype='float',delimiter = ',',skiprows=1, skip_header=0, skip_footer=0, usecols=5,usemask=True) 
print c.max() 
print c.min() 

나는 최대와 최소를 찾을 수 있지만, 어떻게 특정 채널, 속도 및 주파수하여 정렬 할 수 있습니다? 어떤 도움을 주시면 감사하겠습니다. Measured_Power에 대한 아웃 예상 :

Chanel, Rate, Max, Min, Average, 
A, 3, .., .., .., 
A, 6, .., .., .., 
., ., .., .., .., 
., ., .., .., .., 
., ., .., .., .., 
A, 27,.., .., .., 

B, 3, .., .., .., 
B, 6, .., .., .., 
., ., .., .., .., 
., ., .., .., .., 
., ., .., .., .., 
B, 27,.., .., .., 
+2

당신이 무엇을 원하는지, 당신이 가지고있는 것과 당신이 한 일에 어떻게 도달 할 것으로 예상되는지는 분명치 않습니다. 제발 ** 예제 입력 및 출력 ** 필요한 및 설명 * 당신이 이것을 달성하기 위해 노력하고있어. – Veedrac

+1

당신은'numpy'와 결혼 했습니까? 이것은 나에게''pandas' '(http://pandas.pydata.org) 문제와 비슷하게 들린다. – DSM

+0

간단한 솔루션 (numpy, pandas 등)을 찾고 있습니다. – dmaster

답변

1

나는 당신이 얻고 싶은 것을 이해 바랍니다. RateFrequency의 모든 가능한 조합에 대해 최소, 최대 및 평균 Measured_Power을 얻으시겠습니까?

import pandas as pd 

data = pd.read_csv('data_file.csv') 
grouped_measured_power = data.groupby([' Rate', ' Frequency'])[' Measured_Power'] 
min_measured_power_by_rate_and_freq = grouped_measured_power.min() 
max_measured_power_by_rate_and_freq = grouped_measured_power.max() 
average_measured_power_by_rate_and_freq = grouped_measured_power.mean() 

을 그리고 그것 뿐이다 :

글쎄, 당신은 팬더와 함께 매우 빠르게 수행 할 수 있습니다! CSV 파일에 공백이 있기 때문에 열 이름 앞에 공백을 넣었으나 데이터 파일의 형식을 더 좋게 지정할 수도 있습니다. 여기에 기록을 위해

이 예를

> min_measured_power_by_rate_and_freq 
Rate Frequency 
3  100   20.05 
     101   20.08 
6  100   20.12 
     101   20.26 
27  100   20.16 
     101   20.11 
Name: Measured_Power, dtype: float64 

> max_measured_power_by_rate_and_freq 
Rate Frequency 
3  100   20.05 
     101   20.08 
6  100   20.21 
     101   20.26 
27  100   20.50 
     101   20.11 
Name: Measured_Power, dtype: float64 

> average_measured_power_by_rate_and_freq 
Rate Frequency 
3  100   20.050 
     101   20.080 
6  100   20.165 
     101   20.260 
27  100   20.330 
     101   20.110 
Name: Measured_Power, dtype: float64 

결과에 대한 출력입니다 것은 다중 색인 구조 ... 당신도, unstack it 할 수 있습니다.

편집 :

import pandas as pd 
import numpy as np 

data = pd.read_csv('data_file.csv') 
grouped_measured_power = data.groupby([' Rate', ' Frequency'])[' Measured_Power'] 
result = grouped_measured_power.aggregate({'min': np.min, 
              'max': np.max, 
              'average': np.mean}) 

을 그리고 당신이 직접 모든 것을 함께 얻을 것 : : 그냥 당신이 할 수 있도록 당신이 실제로, 한 번에 여러 집계 함수를 적용하여도 더 잘 할 수 있다는 것을 기억

> result 
        average max min 
Rate Frequency      
3  100   20.050 20.05 20.05 
     101   20.080 20.08 20.08 
6  100   20.165 20.21 20.12 
     101   20.260 20.26 20.26 
27 100   20.330 20.50 20.16 
     101   20.110 20.11 20.11 
+0

게시물, 댓글 및 모든 주셔서 감사합니다. 나는 당신의 솔루션을 시도했지만 numpy, 컴파일 및 설치 환경의 오래된 버전이있는 판다에 기술적 인 문제가 있습니다. csv reader를 사용할 수 있습니까? – dmaster

+0

데이터 프레임을 생성하기 위해'csv.reader'를 사용할 수 있어야하지만, 불필요한 엉망처럼 보입니다. 어떤 종류의 문제가 있습니까? 많은 문제없이 numpy 및 pandas를 설치할 수 있어야합니다 (OS는 무엇입니까?). 어쨌든 그룹 및 집계 단계에 필요합니다. – jdehesa

+0

팬더로 문제를 해결했습니다. numpy의 이전 버전을 제거하고 새로운 버전을 설치하면 해결되었습니다. javidcf, 당신의 솔루션은 나를 위해 작동합니다! 감사!! – dmaster

관련 문제