16)
plt.figure(figsize=(10, 5))
plt.boxplot(test, showfliers=False)
plt.show()

상자 그림(boxplot)은 데이터의 분포를 시각화하는 데 사용되는 효과적인 도구이다. 상자 그림은 데이터의 중앙값, 사분위수, 이상치 등을 표시하여 데이터의 대략적인 분포를 파악할 수 있도록 도와준다.
showfliers매개변수: 상자 그림(boxplot)에서 이상치(outliers)를 표시할지 여부를 지정한다.
17)
plt.figure(figsize=(10, 5))
plt.boxplot(test, vert=False, showfliers=False)
plt.show()
boxplot():vert 매개변수: 상자 그림(boxplot)을 수직 방향이 아니라 수평 방향으로 그릴지를 결정한다.
18)
plt.figure(figsize=(10, 5))
plt.boxplot(test, vert=False, showfliers=False, showmeans=True, meanline=True)
plt.show()
boxplot(): showmeans 매개변수: 상자 그림(boxplot)에서 평균값을 보여줄지 여부를 결정한다. 기본값은 False이며, 이를 True로 설정하면 상자 그림에 평균값을 표시한다.meanline 매개변수: 상자 그림에서 평균값을 나타내는 선을 표시할지 여부를 결정한다. True로 설정되어 있어야만 이 매개변수가 작동하며, 기본값은 False이다.19)
unique_langs = merged_df['LanguageHaveWorkedWith'].dropna().unique()
unique_langs
plt.figure(figsize=(10, 15))
plt.boxplot([merged_df[merged_df['LanguageHaveWorkedWith']==lang][COMP_KRW] for lang in unique_lang],
vert=False,
showfliers=False,
showmeans=True,
meanline=True,
labels=unique_langs)
plt.show()

20)
plt.figure(figsize=(10, 15))
box = plt.boxplot([merged_df[merged_df['LanguageHaveWorkedWith']==lang][COMP_KRW] for lang in unique_lang],
vert=False,
showfliers=False,
showmeans=True,
meanline=True,
labels=unique_langs,
patch_artist=True,
boxprops={'facecolor':'teal'})
plt.setp(box['medians'], color='white')
plt.setp(box['means'], color='yellow', linewidth=1)
plt.title('언어별 연봉 분표(KRW)', fontsize=15, fontweight='bold')
plt.xlabel('연봉(만원)', fontweight='bold')
plt.ylabel('개발 언어', fontweight='bold')
plt.ticklabel_format(style='plain', axis='x')
plt.show()

patch_artist 매개변수: 상자 그림(Boxplot)에서 상자의 내부를 채우는 데 사용되는 패치 아티스트를 활성화하는 데 사용된다. 상자의 내부를 채우는 데 패치 아티스트를 사용하면 상자의 색상을 변경하거나 다양한 패턴을 적용할 수 있다. 이 매개변수를 True로 설정하면 상자의 내부를 채우고자 할 때 사용된다.patch_artist=True
boxprops 매개변수: 상자의 속성을 설정하는 데 사용된다. 상자 그림에서 상자의 속성을 변경하려는 경우에 유용하다. 예를 들어, 'facecolor' 속성을 사용하여 상자의 내부 색상을 지정할 수 있다.boxprops={'facecolor':'teal'}
plt.setp() 함수: 객체의 속성을 설정하는 데 사용된다.# 중앙값 선의 색상을 흰색으로 설정
plt.setp(box['medians'], color='white')
# 평균값 선의 색상을 노란색으로 설정하고 두께를 1로 지정
plt.setp(box['means'], color='yellow', linewidth=1)
평균값은 상자 그림에서 기본적으로 표시되지 않지만, 'showmeans=True' 옵션을 사용하여 표시할 수 있다.
위의 코드를 함수화 작업하기
def draw_salary_boxplot(df, target, title, ylabel, showfliers=False, figsize=(10, 20):
label_values = df[target].dropna().unique()
plt.figure(figsize=figsize)
box = plt.boxplot([df[df[target]==value][COMP_KRW] for value in label_values],
vert=False,
showfliers=showfliers,
showmeans=True,
meanline=True,
labels=label_values,
patch_artist=True,
boxprops={'facecolor':'teal'})
plt.setp(box['medians'], color='white')
plt.setp(box['means'], color='yellow', linewidth=1)
plt.title(title, fontsize=15, fontweight='bold')
plt.xlabel('연봉(만원)', fontweight='bold')
plt.ylabel(ylabel, fontweight='bold')
plt.ticklabel_format(style='plain', axis='x')
plt.show()
draw_salary_boxplot(df=merged_df, target='LanguageHaveWorkedWith', title='언어별 연봉 분포(KRW) - 이상치 제외', ylabel='개발언어')
