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. 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['자치구']]
3. sort_values
#ascending, inplace 까먹지 말기
df_target.sort_values(by='세대당인구', ascending=False, inplace=True)
pivot_corr = df_pivot[['고령자비율', '외국인비율', '여성비율', '세대당인구']].corr()
#cf) 굳이 pivot으로 하지 않아도됨.
df_target.sort_values(by='고령자비율', ascending=True).plot(x='자치구', y='고령자비율', kind='barh', grid=True, figsize=(10,10));
df_pivot.sort_values(by='등록외국인 계', ascending=True).plot(y='등록외국인 계', kind='pie', grid=True, figsize=(10,10));
# 3-3: Boxplot
df_target.boxplot(by='권역', column='외국인비율', fontsize=15, figsize=(10,10));
#fit_reg
import seaborn as sns
sns.lmplot(data=df_target, x='외국인비율', y='세대당인구', fit_reg=True, height=9);