[boostcamp] Day 16. 벌써 4주차?

Jaeyeon Kim·2023년 3월 27일
1

Naver Boostcamp AI Tech

목록 보기
17/29

컨디션 난조 ,,
컨디션 관리도 실력이라더라

오늘 배워간 것

Seaborn

matplotlib보다 예쁜 시각화 라이브러리라고만 알고 있었던 Seaborn이다.
일단 연속적인 그래프부터 알아보자.

Countplot

import seaborn as sns
sns.set_theme(style="whitegrid")
df = sns.load_dataset("titanic")
sns.countplot(x=df["class"])

order를 통해서 컬럼 이름을 정렬할 수 있다.
hue + (palette, color) + hue_order를 통해서 컬럼을 특정 색으로 보여줄 수 있다
matplotlib처럼 ax를 지정하고 인덱싱을 통해 그래프 위치를 지정해줄 수 있다.

Box Plot

분포를 살피기 좋다.

df = sns.load_dataset("titanic")
sns.boxplot(x=df["age"])

sns.boxplot(data=df, x="fare", y="deck", hue="deck", dodge=False)

width, linewidth, fliersize 또한 수정이 가능하다.

Violin Plot

df = sns.load_dataset("titanic")
sns.violinplot(x=df["age"])

데이터가 연속적이지 않기 때문에, 그래프를 보는 사람에게 오해를 불러일으킬 수 있다.
이러한 오해를 줄이기 위해 bw, cut, inner의 수정을 통해 그래프를 수정한다.

# cut
sns.violinplot(data=df, x="age", y="alive", cut=0)

# bw
sns.violinplot(data=df, x="age", y="alive", bw=.15)

# inner
sns.violinplot(data=df, x="age", y="embark_town", inner="stick")

scale로 그래프의 폭을 조절하거나, split으로 두 데이터를 동시에 나타낼 수 있다.

# scale
sns.violinplot(data=df, x="deck", y="age", hue="alive", split=True)

다음은 불연속적인 그래프이다.

histplot

penguins = sns.load_dataset("penguins")
sns.histplot(data=penguins, x="flipper_length_mm")

bins와 binswidth으로 막대의 개수를 조정할 수 있다.

# bins
sns.histplot(data=penguins, x="flipper_length_mm", bins=30)

# binwidth
sns.histplot(data=penguins, x="flipper_length_mm", binwidth=3)

데이터에 따라 유용한 방식을 사용하면 된다.

kdeplot

연속확률밀도를 보여준다.
보통 내부에 색을 채워서(fill=True)밀도라는 것을 알려준다.

tips = sns.load_dataset("tips")
sns.kdeplot(data=tips, x="total_bill")

multiple 옵션을 stack, layer, fill로 바꾸며 여러 데이터를 나타낼 방법을 수정할 수 있다. 하지만 fill 사용은 지양하고, layer 사용을 추천함.

cumulative=True 옵션을 통해 축적 분포를 확인할 수 있다.

2개 이상의 변수에 대한 결합 확률 분포를 확인할 수 있다.

Heatmap

데이터 간의 상관 관계를 파악하기에 좋다.

vminr과 vmax로 범위를 조정하고, center=0를 통해 색을 확실히 볼 수 있다.
또한 cmap를 수정하여 가독성을 높일 수 있다.

annot=True를 통해 데이터의 실제 값을 볼 수 있고,
fmt를 통해서 표현 형식 또한 지정할 수 있다.

linewidth를 추가해서 사각형들을 떨어트릴 수 있고,
square=True를 통해서 정사각형으로 표현할 수 있다.

특정 부분만 보고 싶을 때는 mask를 씌워서 볼 수 있다.

jointplot

한 데이터에 대한 두 그래프를 한 번에 나타낼 수 있다.

penguins = sns.load_dataset("penguins")
sns.jointplot(data=penguins, x="bill_length_mm", y="bill_depth_mm")

kind 파라미터의 수정을 통해 여러 그래프로 나타낼 수 있다.
(scatter, kde, hist, hex, reg, resid)

Pair Plot

모든 feature에 대해서 다른 feature들에 대한 특징을 나타내준다.
한 눈에 feature 간의 관계를 파악할 수 있어 유용할 것 같다.

penguins = sns.load_dataset("penguins")
sns.pairplot(penguins)

이 그래프 또한 hue를 통해 각 그래프를 분리할 수도 있다.

cornur=True를 통해 좌측 하단 삼각형 영역만 볼 수 있다.

Radar Chart

캐릭터 간의 강함 비교, 아이폰/갤럭시 비교 등에 사용될 수 있다.
feature에 따라 면적이 달라질 수 있어, 면적을 데이터 값으로 오해하지 말자
feature 개수가 많다면 가독성이 떨어진다.

set_thetamin, set_thetamax 를 통해 부채꼴로 표현할 수 있다.

polar coordinate를 fill를 조절하여 Radar Chart를 사용할 수 있다.
set_thetagrids를 통해 원하는 스텝씩 레이블을 달 수 있다.

Missingno

결측치를 시각화 해주는 라이브러리.

bar chart로도 나타낼 수 있다.

Treemap

계층적 데이터에 대한 시각화를 도와주는 라이브러리.
plotly 라이브러리를 사용하면 사각형 내부에 사각형을 포함시킬 수 있고,
interactive 시각화를 활용할 수도 있다.
솔직히 어떻게 써야할 지 감은 잘 안 온다

Waffle Chart

와플처럼 값을 쪼개서 볼 수 있고, 비율을 한 눈에 보기 쉽다.
아이콘을 사용해서 인포그래픽에도 유용하게 사용할 수 있다.(Pictogram Chart)
" 제일 예쁨 "


서두르지 말고,
한 발짝씩 나아가기

profile
낭만과 열정으로 뭉친 개발자 🔥

0개의 댓글