ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [seaborn] Count Plot 그리기 ( sns.countplot, sns.catplot )
    AI-ML 2024. 5. 6. 16:09
    728x90
    반응형

     

    - 목차

     

    키워드.

    • 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 을 표현합니다.

     

    반응형
Designed by Tistory.