-
[seaborn] Count Plot 그리기 ( sns.countplot, sns.catplot )AI-ML 2024. 5. 6. 16:09728x90반응형
- 목차
키워드.
- count plot
- Categorical Data
- hue
- histogram
들어가며.
이번 글에서는 seaborn 라이브러리를 활용하여 Count Plot 을 그리는 방법에 대해서 알아보도록 하겠습니다.
Count Plot 은 범주형 데이터의 각각의 범주가 차지하는 데이터 갯수를 표현하는데에 사용됩니다.
하나의 DataFrame 이 존재하고, DataFrame 은 범주형 데이터를 표현하는 칼럼을 가집니다.
전체 데이터셋에서 개별적인 Category 가 몇 개가 존재하는지 그 구성을 파악하고 싶을 때에 Count Plot 이 사용됩니다.
아래 예시는 "gender" 라는 이름의 칼럼을 가지는 DataFrame 의 Count Plot 을 시각화하는 예시입니다.
DataFrame 은 단 하나의 "gender" 칼럼을 가지구요.
"gender" 칼럼은 1천개의 랜덤한 값을 가집니다.
import pandas as pd import random import seaborn as sns sns.set_theme(style="ticks") genders = [random.choice(["Female", "Male"]) for _ in range(1000)] df = pd.DataFrame({'gender': genders}) sns.catplot(kind="count", data=df, x="gender", palette="hls")
기본적인 사용법.
seaborn 을 import 하는 방법은 아래와 같습니다.
import seaborn as sns
관습적으로 seaborn 의 alias 를 "sns" 로 사용하구요. sns.catplot 함수를 통해서 Count Plot 시각화를 수행합니다.
catplot 은 크게 3가지 인자를 필요로합니다.
- x
- data
- kind
data 인자는 사용할 DataFrame 을 추가합니다.
x 인자는 DataFrame 의 범주형 칼럼을 의미합니다.
마지막인 kind 인자의 값은 어떤 시각화 방식을 사용할지에 대한 결정인데요.
Count Plot 의 경우에는 "count" 를 선언합니다.
아래 예시는 위에서 정의한 데이터셋을 확장한 구조입니다.
"city" 라는 새로운 칼럼을 추가한 DataFrame 의 Count Plot 시각화에 대한 예시입니다.
"city" 칼럼은 6개의 Unique 한 도시 데이터를 가지며, Count Plot 은 아래와 같습니다.
import pandas as pd import random import seaborn as sns genders = [random.choice(["Female", "Male"]) for _ in range(1000)] cities = [random.choice(["LA", "Seoul", "Tokyo", "London", "Toronto", "Shanghai"]) for _ in range(1000)] df = pd.DataFrame({'gender': genders, "city": cities}) sns.catplot(kind="count", data=df, x="city", palette="hls")
sns.countplot 함수.
catplot 함수 뿐만 아니라 countplot 함수를 사용하여 시각화를 수행할 수 있습니다.
아래의 코드 예시는 sns.countplot 함수를 사용하는 예시입니다.
import pandas as pd import random import seaborn as sns genders = [random.choice(["Female", "Male"]) for _ in range(1000)] cities = [random.choice(["LA", "Seoul", "Tokyo", "London", "Toronto", "Shanghai"]) for _ in range(1000)] df = pd.DataFrame({'gender': genders, "city": cities}) sns.countplot(data=df, x="city", palette='hls')
Count Plot Arguments.
countplot 함수가 가지는 여러 인자들에 대해서 알아보도록 하겠습니다.
data.
seaborn 의 catplot 또는 countplot 함수는 DataFrame 을 인자로 수용할 수 있습니다.
이는 matplotlib 과 다른 차별점이기도 합니다.
data 라는 인자로 DataFrame 을 입력할 수 있고, x 과 y 그리고 hue 인자에 DataFrame 이 가지는 Column 값을 선언할 수 있습니다.
df = pd.DataFrame({'gender': genders, "city": cities}) sns.countplot(data=df, x="city", palette='hls', hue='gender')
위와 같이 Count Plot 의 data 는 선언된 df 라는 DataFrame 을 입력합니다.
그리고 Count Plot 의 X 축으로 "city" 칼럼을 사용하고, Y 축은 "city" 칼럼의 카운트를 사용됩니다.
바로 다음 설명에서 알아볼 hue 라는 인자 또한 DataFrame 의 칼럼을 입력받을 수 있습니다.
즉, data 인자에 시각화하고자하는 DataFrame 을 입력합니다.
hue.
hue 인자를 통해서 X 축의 요소를 한 차례 더 분류할 수 있습니다.
Count Plot 시각화에 사용하는 DataFrame 이 2개 이상의 칼럼을 가지고 있고,
2개 이상의 칼럼이 범주형 데이터라면 X 축을 또 다른 칼럼을 기준으로 분리할 수 있습니다.
예를 들어보도록 하겠습니다.
아래의 예시 데이터는 "city", "gender" 라는 2개의 칼럼을 가지는 DataFrame 입니다.
그리고 "city", "gender" 칼럼 모두 범주형 데이터입니다.
이 상황에서 x 인자는 "city", 그리고 hue 인자는 "gender" 로 설정해보겠습니다.
import pandas as pd import random import seaborn as sns genders = [random.choice(["Female", "Male"]) for _ in range(1000)] cities = [random.choice(["LA", "Seoul", "Tokyo", "London", "Toronto", "Shanghai"]) for _ in range(1000)] df = pd.DataFrame({'gender': genders, "city": cities}) sns.countplot(data=df, x="city", palette='hls', hue='gender')
시각화의 결과는 위와 같구요. x 축으로 사용된 "city" 칼럼은 2개의 Bar 들로 표현됩니다.
2개의 Bar 들로 표현되는 이유는 "gender" 값을 기준으로 나뉘어져 표현되기 때문이구요.
hue 인자는 Count Plot 을 또 다른 범주형 데이터를 기준으로 한 Depth 더 분리하여 표현합니다.
Histogram 과의 차이점.
Count Plot 과 Histogram 의 차이점은 무엇일까요 ?
가장 중요한 차이점은 Continuos, Discrete Variable 의 여부입니다.
범주형 데이터와 같이 이산적인 값을 취하는 데이터는 Count Plot 을 통해서 각 범주별 수치를 시각화할 수 있구요.
연속적인 데이터의 경우에는 Histogram 을 사용하여 연속적인 데이터를 정해진 bins 내에서 표현합니다.
아래의 두 그래프는 동일한 데이터를 Count Plot 과 Histogram 으로 표현한 결과입니다.
"age" 라는 Discrete Variable 을 X 축으로 설정하였고, 왼쪽은 Count Plot 을 오른쪽은 Histogram 을 표현합니다.
반응형'AI-ML' 카테고리의 다른 글
[seaborn] Violin Plot 알아보기 (0) 2024.05.07 [scikit-surprise] SVD Model 알아보기 ( Singular Value Decomposition ) (0) 2024.05.07 [scikit-learn] KFold 알아보기 ( cross validation ) (1) 2024.04.28 [torchvision] datasets.MNIST 데이터 내려받기 (0) 2024.04.24 [torchvision] RGB to Grayscale Image (0) 2024.03.31