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으로 반환하는 형식
이걸 이전에 접할 때는 정말 파이썬 초보였구나 싶으면서도 에러를 보고 이제는 바로 이해가 된다는 사실이 신기함.