반응형
- https://www.datamanim.com/dataset/99_pandas/pandasMain.html 를 참고하였습니다. 감사합니다.
- 익숙한 줄 알았던 Pandas를 다시 해보니 가물가물합니다. 꾸준한 노력, 연습만이 합격!을 가져올 것입니다!!
GROUPING
- host_name 컬럼에서 각 host_name의 빈도수를 구하고 host_name으로 정렬하여 상위 5개 출력하기
- groupby('컬럼명').size() : 컬럼의 각 unique value끼리 묶어 주는 것(grouping)이 groupby()입니다.
- size()는 묶어준 각 group의 요소들의 count(size)를 계산하여 Series로 반환합니다.
df.groupby('host_name').size().head()
또는
df.host_name.value_counts().sort_index()
- 각 host_name의 빈도수를 구하고 빈도수 기준 내림차순 정렬한 데이터 프레임 만들기. 빈도수 컬럼은 counts.
df.groupby('host_name').size()\
.to_frame().rename(columns = {0:'counts'})\
.sort_values('counts', ascending=False)
- neighbourhood_group의 값에 따른 neighbourhood 컬럼 값의 갯수 구하기
df.groupby(['neighbourhood_group', 'neighbourhood'], as_index=False).size()
- neighbourhood_group의 값에 따른 neighbourhood 컬럼 값 중 neighbourhood_group 의 최댓값 출력
- 저는 size().max()라고 해서 틀렸네요. ㅠㅠ 문제를 그대로 코드로 옮기는 연습 필요합니다!
df.groupby(['neighbourhood_group', 'neighbourhood'], as_index=False).size()\
.groupby(['neighbourhood_group'], as_index=False).max()
- neighbourhood_group 값에 따른 price의 평균, 분산, 최대, 최솟값 구하기
- 먼저 neighbourhood_group 컬럼과 price 컬럼을 선택합니다.
- neighbourhood_group 을 기준으로 grouping합니다.
- grouping을 한 경우 agg()를 이용하여 리스트([ ])된 내용(mean, var, max, min)을 출력해줍니다.
df[['neighbourhood_group', 'price']]\
.groupby('neighbourhood_group').agg(['mean', 'var', 'max', 'min'])
- neighbourhood 값과 neighbourhood_group 값에 따른 price의 평균을 계층적 indexing 없이 구하고 NaN은 -999로 채우기
- fillna()는 결측치를 채우는 방법입니다.
- 다음 그림을 보며 stack()과 unstack()을 이해합시다.
- grouping 한 후, 데이터프레임의 구조를 바꿀 때 유용하게 사용합니다.
df.groupby(['neighbourhood', 'neighbourhood_group']).price.mean().unstack().fillna(-999)
- neighbourhood_group 값에 따른 room_type 컬럼의 숫자를 구하고 neighbourhood_group 값을 기준으로 각 값의 비율 구하기
- 이건 하나 하나 해볼게요.
df[['neighbourhood_group', 'room_type']].groupby(['neighbourhood_group', 'room_type']).size()
- unstack()을 하니 room_type의 하위 항목이 세로 줄로 옵니다.
df[['neighbourhood_group', 'room_type']].groupby(['neighbourhood_group', 'room_type']).size().unstack()
- 비율을 구합니다.
dfdf.loc[:,:] = (dfdf.values / dfdf.sum(axis=1).values.reshape(-1, 1))
GROUPING은 원래 어려운 코드입니다.
하지만 데이터 가공할때 많이 사용하게 됩니다.
세부적인 것들을 꼭 기억해서 잘 이용하도록 해보아요.
오늘도 감사합니다.
'Python > 빅데이터분석기사(실기)' 카테고리의 다른 글
데이터 분석 자격증, 한 번에 합격! 후기 풉니다. (1) | 2024.01.02 |
---|---|
[빅분기실기]_작업형 1유형 까먹을 것 같은 것 정리하기!(5)_Pivot/Merge, Concat (0) | 2023.10.18 |
[빅분기실기]_작업형 1유형 까먹을 것 같은 것 정리하기!(4)_Time_Series (0) | 2023.10.17 |
[빅분기실기]_작업형 1유형 까먹을 것 같은 것 정리하기!(3)_apply, map (0) | 2023.10.15 |
[빅분기실기]_작업형 1유형 까먹을 것 같은 것 정리하기!(1)_data기본처리 (2) | 2023.10.11 |