매일공부

[파이썬] 왜 항상 groupby는 집계함수랑 같이 써야하는가 본문

Programming/Python

[파이썬] 왜 항상 groupby는 집계함수랑 같이 써야하는가

aram 2023. 7. 5. 11:52

 

커리큘럼에 포함된 파이썬 기초수업을 들으면서 전체 함수랑 모듈 리마인드하다가 계속 궁금했던 사실을 발견

gap = pd.read_csv('data/gapminder.tsv', sep='\t')
gap.sample(5)

gap_gpd = gap.groupby('continent')
gap_gpd 
#<pandas.core.groupby.generic.DataFrameGroupBy object at 0x000002D70A3E2D70>

>> 왜 항상 그룹을 하면 주소값으로 저장이 되는 걸까하고 궁금해야하면서 항상 하라는데로 집계함수 사용했음

 

print(gap_gpd.groups)
#{'Africa': [24, 25, 26, 27, 28, 29, 30, 31, 32, ...], 'Americas': [48, 49, ...] ...

그러다가 groups라는 함수가 있기에 그냥 찍어보니 딕셔너리 형식으로 저장이 되어 있음

그래서 든 생각. 그냥 DataFrame을 사용하면 안되나?

pd.DataFrame(gap_gpd.groups)
# raise ValueError(
#     670         "Mixing dicts with non-Series may lead to ambiguous ordering."
#     671     )

# ValueError: All arrays must be of the same length

에러를 보고 아차 싶었음

 

그룹을 하면 그룹간의 크기가 항상 같다는 보장이 없음.
그래서 길이가 동일해야하는 dataframe을 만들 수 없어서, 주소값으로 저장이 됨.
길이를 맞춰 통계형식으로 집계함수를 사용해서 dataframe으로 반환하는 형식

 

이걸 이전에 접할 때는 정말 파이썬 초보였구나 싶으면서도 에러를 보고 이제는 바로 이해가 된다는 사실이 신기함.

 

728x90
Comments