2012-10-25 3 views
1

날짜, 세그먼트 및 메트릭의 3 개의 열이있는 데이터 프레임 데이터가 있습니다. 다음을 수행하고 있습니다.데이터 세트에서 팬더를 사용하여 평균값을 찾는 방법은 무엇입니까?

data = pandas.read_csv("Filename.csv") 
ave = data.groupby('Segment').mean() #works 
ave = data.groupby('Segment').median() #gives error 
ave['median'] = data.groupby('Segment').median() 

Traceback (most recent call last): 
    File "<input>", line 1, in <module> 
    File "/usr/lib/pymodules/python2.7/pandas/core/frame.py", line 1453, in __setitem__ 
    self._set_item(key, value) 
    File "/usr/lib/pymodules/python2.7/pandas/core/frame.py", line 1488, in _set_item 
    NDFrame._set_item(self, key, value) 
    File "/usr/lib/pymodules/python2.7/pandas/core/generic.py", line 301, in _set_item 
    self._data.set(key, value) 
    File "/usr/lib/pymodules/python2.7/pandas/core/internals.py", line 616, in set 
    assert(value.shape[1:] == self.shape[1:]) 
AssertionError 
+0

문제를 나타내는 데이터의 예를 제공해주십시오. – BrenBarn

답변

3

어떤 오류가 발생합니까?

ave = data.groupby('Segment').median() 

나는 작동해야한다고 생각합니다. 어쩌면 당신의 데이터에 오류가 발생했습니다.

def mymed(group): 
    return np.median(group.dropna()) 

ave = data.groupby('segment')['Metric'].apply(mymed) 

그것은 쉬울 것 오류를 복제 일부 샘플 데이터를 제공 할 수있는 경우 : 당신은 당신이 뭔가 같은 오류의 원인을 해결할 수 있는지 확인하기 위해 자신의 중간 함수를 적용 시도 할 수 있습니다. 여기

당신이 원래 dataframe에 다시 중간을 추가 할 수 있습니다, 다른 접근 방식이다 메트릭 열을위한 중수가된다 : 어떠했는지

data['metric_median'] = data.groupby('Segment')['Metric'].transform('median') 

를 그 각각의 데이터 포인트에 부착 된 그룹의 평균을 가지고 유용 당신이 나중에하고 싶은 일에 약간 달려 있습니다.

0

다음 코드를 사용하여 중간 값을 계산할 수 있다고 생각합니다.

print(data['segment'].median()) 

작동하지 않는 경우 평균 값을 누락 된 데이터 대신 넣고 중간 값을 계산해보십시오.

관련 문제