programing

그룹화, 그룹화, 그룹화, 평균화

elecom 2023. 7. 27. 21:38
반응형

그룹화, 그룹화, 그룹화, 평균화

다음과 같은 데이터 프레임이 있습니다.

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

반응형