EDA Level Test 01 복기

이재은·2024년 6월 25일

EDA Level Test 01

1단계: DataFrame 불러오기 & 전처리

문제 1-3) 천단위 구분자 " , "를 제거하고, data의 type을 int 또는 float으로 변경하세요.(lambda, map)

1. lambda, map, apply

'세대', '합계', '남자', '여자', '한국인 계', '한국인 남자', '한국인 여자', '등록외국인 계', '등록외국인 남자', '등록외국인 여자', '65세이상고령자': 천단위 구분자 "," 제거 및 int로 타입 변경

#원하는 컬럼 리스트 화
target_cols = ['세대', '합계', '남자', '여자', '한국인 계', '한국인 남자', '한국인 여자', '등록외국인 계', '등록외국인 남자', '등록외국인 여자', '65세이상고령자']

lambda로 둘다적용
df_target[target_cols] = df_target[target_cols].apply(axis=1, func=lambda col: col.str.replace(',', '').astype(int))

2단계: 원하는 정보 얻기

1단계에서 구한 DataFrame에 '권역' column을 추가하여 해당 구에 맞는 권역을 입력하세요.

2. dict, itterows

region_dict = {'도심권': ['종로구', '중구', '용산구'],
               '서북권': ['은평구', '서대문구', '마포구']}
               
#방법 1
df_target['권역'] = np.nan

for idx, rows in df_target.iterrows():
    for region, gu in region_dict.items():
        if rows['자치구'] in gu :
            df_target.loc[idx, '권역'] = region ##!!! loc꼭 붙여주기 !
            break     
            
#방법 2
#{종로구 : 도심권, 중구 : 도심권} 만들기  
gu_dict = {gu: region for region, gu_list in region_dict.items() for gu in gu_list}

for idx, row in df_target.iterrows():
    df_target.loc[idx, '권역'] = gu_dict[row['자치구']]

문제 2-4) '세대당인구'을 기준으로 내림차순 정렬하세요.

3. sort_values

#ascending, inplace 까먹지 말기
df_target.sort_values(by='세대당인구', ascending=False, inplace=True)

문제 2-5) 2-3에서 만든 DataFrame을 이용하여 ['고령자비율', '외국인비율', '여성비율', '세대당인구']간의 피어슨 상관계수 행렬(Correlation matrix)를 구하세요

  • 상관계수(correlation coefficient): 두 변수가 함께 변하는 정도를 -1 ~ +1 범위의 수로 나타낸 것
  • 상관계수 행렬(Correlation Matrix): 변수간 상관계수를 보여주는 행렬
pivot_corr = df_pivot[['고령자비율', '외국인비율', '여성비율', '세대당인구']].corr()

3단계: 시각화

문제 3-1) 자치구별 고령자비율을 내림차순에 따라 barh 그래프

#cf) 굳이 pivot으로 하지 않아도됨.
df_target.sort_values(by='고령자비율', ascending=True).plot(x='자치구', y='고령자비율', kind='barh', grid=True, figsize=(10,10));

문제 3-2) 권역별 등록외국인 계를 PIE chart

df_pivot.sort_values(by='등록외국인 계', ascending=True).plot(y='등록외국인 계', kind='pie', grid=True, figsize=(10,10));

문제 3-3)** 권역별 외국인비율을 Box plot으로 시각화

# 3-3: Boxplot
df_target.boxplot(by='권역', column='외국인비율', fontsize=15, figsize=(10,10));

문제 3-4) 자치구별 외국인비율-세대당인구를 Scatter plot에 나타내고, 상관관계에 따른 Regression Line을 시각화

#fit_reg
import seaborn as sns
sns.lmplot(data=df_target, x='외국인비율', y='세대당인구', fit_reg=True, height=9);
profile
Dare to be an optimist

0개의 댓글