반응형
그룹화, 그룹화, 그룹화, 평균화
다음과 같은 데이터 프레임이 있습니다.
cluster org time
1 a 8
1 a 6
2 h 34
1 c 23
2 d 74
3 w 6
클러스터당 org당 평균 시간을 계산하려고 합니다.
예상 결과:
cluster mean(time)
1 15 #=((8 + 6) / 2 + 23) / 2
2 54 #=(74 + 34) / 2
3 6
판다에서 어떻게 하는지 모르는데, 누가 도와줄 수 있나요?
만약 당신이 먼저 다음의 조합을 측정하고 싶다면.['cluster', 'org']그리고 나서 나를 받아줘요.cluster사용할 수 있는 그룹:
In [59]: (df.groupby(['cluster', 'org'], as_index=False).mean()
.groupby('cluster')['time'].mean())
Out[59]:
cluster
1 15
2 54
3 6
Name: time, dtype: int64
만약 당신이 평균을 원한다면,cluster그룹만 해당하는 경우 다음을 사용할 수 있습니다.
In [58]: df.groupby(['cluster']).mean()
Out[58]:
time
cluster
1 12.333333
2 54.000000
3 6.000000
사용할 수도 있습니다.groupby에['cluster', 'org']그런 다음 사용합니다.mean():
In [57]: df.groupby(['cluster', 'org']).mean()
Out[57]:
time
cluster org
1 a 438886
c 23
2 d 9874
h 34
3 w 6
저는 단순히 이것을 할 것입니다. 이것은 문자 그대로 당신이 원하는 논리를 따릅니다.
df.groupby(['org']).mean().groupby(['cluster']).mean()
또 다른 가능한 솔루션은 다음을 사용하여 데이터 프레임을 재구성하는 것입니다.pivot_table()그럼 가져가세요mean()합격해야 합니다.aggfunc='mean'(평균)time타고cluster그리고.org).
df.pivot_table(index='org', columns='cluster', values='time', aggfunc='mean').mean()
또 다른 가능성은 사용하는 것입니다.level의 매개 변수.mean()첫 번째 이후에groupby()집계 대상:
df.groupby(['cluster', 'org']).mean().mean(level='cluster')
언급URL : https://stackoverflow.com/questions/30328646/group-by-in-group-by-and-average
반응형
'programing' 카테고리의 다른 글
| mysql 치명적 오류: 버퍼 풀에 메모리를 할당할 수 없습니다. (0) | 2023.08.01 |
|---|---|
| NSData 또는 UIImage에서 이미지 유형 찾기 (0) | 2023.08.01 |
| JSONP를 사용하여 html 페이지 로드 (0) | 2023.07.27 |
| dbms_scheduler.run_job('jobName)이(가) 실행되지 않음 (0) | 2023.07.27 |
| 텍스트 편집 코틀린에서 텍스트 설정 (0) | 2023.07.27 |