□ 라이브러리 호출 및 데이터 불러오기
#라이브러리 호출
import pandas as pd
import numpy as np
import seaborn as sns
#데이터 불러오기
raw_welfare = pd.read_spss("C:/Users/Lenovo/Downloads/Koweps_hpwc14_2019_beta2.sav")
#데이터 변수에 카피
welfare = raw_welfare.copy()
□ 복수개의 컬럼명변경
welfare = welfare.rename(columns = {
'h14_g3' : 'sex',
'h14_g4' : 'birth',
'h14_g10' : 'marriage_type',
'h14_g11':'religion',
'p1402_8aq1':'income',
'h14_eco9':'code_job',
'h14_reg7':'code_region'
})
□ where 문을 활용한 특정 필드의 값 변환(barplot)
○ np.where() 함수는 NumPy 라이브러리에서 제공하는 함수로, 조건에 따라 배열의 값을 선택하여 반환. 조건을 나타내는 배열 또는 조건식을 만족하는 경우에는 앞 값으로, 그렇지 않은 경우에는 뒤 값으로 대체
○ groupby
- groupby('sex', as_index=False): 'sex' 열을 기준으로 그룹화. as_index=False로 그룹의 인덱스를 다시 지정하지 않도록 설정
- .agg(mean_income=('income','mean')): 각 그룹에 대해 'income' 열의 평균을 계산하여 'mean_income'이라는 새로운 열로 결과집계
#결측치 확인 및 값 변환
welfare['sex'].isna().sum() # 출력 0, 결측값 : 없음
welfare['sex'].value_counts() # 2.0 : 7913 1.0 : 6505
welfare['sex'] = np.where(welfare['sex'] == 1, '남', '여')
welfare['sex'].head(30)
welfare[welfare['income'] ==9999] #출력 0, 결측값 : 없음
welfare['income'] = np.where(['income'] == 9999, np.nan, welfare['income'])
# #그룹바이
sex_income = welfare.dropna(subset=['income']).groupby('sex',as_index=False).agg(mean_income=('income','mean'))
sns.barplot(data=sex_income, x='sex', y='mean_income')
□ 다른 파일 불러온 후 불러온 파일과 기존 파일 머지
#다른파일불러오기
list_data = pd.read_excel("C:/Users/Lenovo/Downloads/Koweps_Codebook_2019.xlsx", sheet_name='직종코드')
#머지
welfare1 = welfare.merge(list_data, how='left',on='code_job')
□ 직업별 그룹화 및 평균급여산출
job_income = welfare1.dropna(subset=['job','income'])
job_income_grp = job_income.groupby('job',as_index=False).agg(mean_income=('income','mean'))
○ TIP!!!
1) as_index=True를 진행하면 job필드가 인덱스로 잡힘
2) .job_income.groupby('job',as_index=False) 까지만 코딩후 변수저장했다면 해당 변수는 Series로 저장됨
3) agg()함수는 그룹화된 데이터프레임을 대상으로 집계연산을 해주는 함수임
- 'income'필드로 평균산출
□ 직업별 급여가 많고 적고에 대한 top 10 시각화
top_10_gj = job_income_grp.sort_values('mean_income',ascending=False).head(10)
top_10_bj = job_income_grp.sort_values('mean_income',ascending=True).head(10)
sns.barplot(data=top_10_gj, x='mean_income', y='job')
sns.barplot(data=top_10_bj, x='mean_income', y='job')
□ .query함수를 활용한 그룹화 및 시각화
○ .query 함수
- 판다스의 .query() 함수는 데이터프레임에서 특정 조건을 기반으로 행을 선택하는 데 사용되는 강력한 메서드
- SQL과 유사한 방식으로 데이터를 필터링할 수 있음
- .query() 함수는 특정 조건을 문자열로 표현하여 사용하며, 이 조건은 데이터프레임의 열에 대한 비교, 논리 연산 등을 포함할 수 있음
DataFrame.query(expr, inplace=False, **kwargs)
▶ expr: 문자열로 된 조건 표현식으로 데이터프레임의 컬럼에 대한 비교와 논리 연산을 포함할 수 있음
▶ inplace: 기본값은 False이며, True로 설정하면 원본 데이터프레임을 수정하며 False로 설정하면 새로운 데이터프레임을 반환
▶ **kwargs: 추가적인 키워드 인자로, 조건 표현식에서 사용되는 변수에 값을 전달할 때 사용됩니다.
job_man = welfare.dropna(subset='job').query("sex=='남'").groupby('job',as_index=False).agg(num_cnt=('job','count')).sort_values('num_cnt',ascending=False).head(10)
job_woman = welfare.dropna(subset='job').query("sex=='여'").groupby('job',as_index=False).agg(num_cnt=('job','count')).sort_values('num_cnt',ascending=False).head(10)
'Python > seaborn & matplotlib' 카테고리의 다른 글
Plotly2 ( + Bonus) (0) | 2024.02.19 |
---|---|
전처리 후 시각화(Series 타입을 Seaborn으로 그래프화) (0) | 2024.02.16 |
판다스 parse_dates, assign 함수를 활용한 시각화 (0) | 2024.02.16 |
Plotly ( + Bonus) (0) | 2024.02.15 |
pie, barplot 차트 (+glob함수로 다중 데이터 불러오기) (0) | 2024.02.07 |