파이썬/판다스

pandas 배우기 3편 데이터시각화: 빅분기 ADP 데이터분석 시험, 파이차트, 히스토그램, 박스플랏, 스케터플랏,히트맵

Olivia-BlackCherry 2024. 11. 7. 07:52

 

데이터 시각화 위한 다양한 그래프와 구체적인 파라미터를 살펴본다.

 

목차

    1. pie 파이차트

     

    1) 단일 파이차트
    autopct, startangle, legend, loc

    claim = data2.iloc[:3]
    opinion = data2.iloc[3:]
    
    import matplotlib.pyplot as plt
    plt.figure(figsize=(10, 5))
    plt.pie(claim['percent'], labels=claim['author_ban_status'], autopct='%1.2f%%', startangle=90)
    plt.legend(labels=claim['author_ban_status'], loc='best')
    plt.show()

     

     
    2) subplot 그리기

    fig, ax = plt.subplots(1, 2, figsize=(10,5))
    ax[0].pie(claim['percent'], labels=claim['author_ban_status'], autopct='%1.1f%%', startangle=90)
    ax[0].set_title("Claim")
    ax[0].legend(labels=claim['author_ban_status'], loc = 'left')
    
    ax[1].pie(opinion['percent'], labels=claim['author_ban_status'], autopct='%1.1f%%', startangle=90,labeldistance=1.1)
    ax[1].legend(labels=claim['author_ban_status'], loc = 'left')
    ax[1].set_title("Opinion")
    plt.show()

     

     

    2. histplot 히스토그램 히스토플랏

     
    1) sns

    sns.histplot(data=?, bins=?, kde=?, color=?)
    sns.histplot(data=?, x= ?, hue=?, bins=?, kde=?, color=?)

      
    kde : 커널 밀도 추정 곡선 - 데이터의 분포를 부드러운 곡선으로 표현, 데이터가 어느 구간에 집중되어 있는지 부드럽게 표현, 밀도 잘 이해하도록 도와줌.

    sns.histplot(data=data.video_duration_sec, kde=True)

      figure 정식으로 figure 그리고 시작하기
      title 붙이기
      bins 개수 조절하기

    plt.figure(figsize=(10,5))
    plt.title("video_druation_sec")
    sns.histplot(data=data.video_duration_sec, kde=True, bins=20)
    plt.show()

     

        multiple : 시각적 표현방식 (겹쳐질지 , 나란히 표시될지)
    - layer 겹쳐서 (기본값)
    - stack 쌓여 (누적)
    - fill 백분율로 쌓여
    - doge 나란히
     
    < multiple='layer'  > 
    layer 겹쳐서 (기본값)

    plt.figure(figsize=(10,5))
    sns.histplot(data=data, x='claim_status', hue='verified_status'
                 , multiple='layer')
    plt.show()

     
     
    < multiple='stack'  >
    stack 쌓여 (누적)

    plt.figure(figsize=(10,5))
    sns.histplot(data=data, x='claim_status', hue='verified_status'
                 , multiple='stack')
    plt.show()

     
    < multiple='fill'  >
    fill 백분율로 쌓여

    sns.histplot(data=data, x='claim_status', hue='verified_status'
                 , multiple='fill')

     
    < multiple='dodge'  >
     doge 나란히

    plt.figure(figsize=(10,5))
    sns.histplot(data=data, x='claim_status', hue='verified_status'
                 , multiple='dodge')
    plt.show()

     
       shrink : 너비를 줄임 (막대나 kde 곡선이 겹칠 때 시각적으로 구분하기 쉽게 만들어줌)
    - 기본값 shrink=1
    - 값이 1보다 작을수록 kde 곡선의 너비가 더 좁아짐
    - 0.8이면 막대의 너비가 80%로 축소 

    sns.histplot(data=data, x='claim_status', hue='verified_status'
                 , multiple = 'dodge'
                 , shrink = 0.8 )

     
     
    < laye 겹침 (왼) / dodge 나란희 (오)  >

     

     
       hue : 구분
       hue_order = [ 'a', 'b', 'c'] :순서
       palette = {key: value, key:value }  색깔
    red, green, blue, orange, purple, brown, pink, gray, olive, cyan

    sns.histplot(data=data, x='claim_status', 
                 hue='author_ban_status', hue_order = ['active', 'under review', 'banned'],
                 palette={'active':'green', 'under review': 'yellow', 'banned':'red'},
                 multiple='dodge', shrink=0.9)
    plt.title('Claime status by author ban status- counts')

     

                 palette={'active':'olive', 'under review': 'orange', 'banned':'cyan'}

     
     
     
       palette 테마로 설정 = deep, muted, bright, pastel, dark

    sns.histplot(data=data, x='claim_status', 
                 hue='author_ban_status', hue_order = ['active', 'under review', 'banned'],
                 palette = 'pastel',
                 multiple='dodge', shrink=0.9)
    plt.title('pastel')
    plt.show()

     
     

     

     

    2) plt

    data.hist()
    data.video_duration_sec.hist()

     

    3. boxplot 박스플랏

    sns.boxplot(data=data)
    sns.boxplot(x=?, data=data)
    sns.boxplot(y=?, data=data)
    sns.boxplot(x=?, y=?, data=data)
    sns.boxplot(x=?, y=?, hue=?, data=data)
    sns.boxplot(data.video_duration_sec)

     
     

    plt.figure(figsize=(5,1))
    plt.title('video_duration_sec')
    sns.boxplot(data.video_duration_sec)
    plt.show()

      

    plt.figure(figsize=(5,1))
    plt.title('video_duration_sec')
    sns.boxplot(x= data.video_duration_sec)
    plt.show()

     

    plt.figure(figsize=(5,1))
    plt.title('video_duration_sec')
    sns.boxplot(y= data.video_duration_sec)
    plt.show()

     

    plt.figure(figsize=(10,5))
    plt.title('video_duration_sec')
    sns.boxplot(x= 'claim_status', y='video_duration_sec', data=data)
    plt.show()

     

    plt.figure(figsize=(10,5))
    plt.title('video_duration_sec')
    sns.boxplot(x= 'claim_status', y='video_duration_sec', hue='author_ban_status', data=data)
    plt.show()

    plt.xticks(fontsize=?)
    plt.yticks(fontsize=?)

    plt.xticks(fontsize=12)

     
     

     

    4. scatterplot 산점도

    sns.scatterplot(x=?, y=?, data=?, hue=?, s=?, alpha=?)

     

    ★ s: 크기(marker size)
    ★  alpha:투명도

    sns.scatterplot(data=data, x='video_view_count', y='video_like_count', hue='claim_status')

     

    sns.scatterplot(data=data, x='video_view_count', y='video_like_count', hue='claim_status', s= 20, alpha=0.5)

     

     

     

     

    5. heatmap

    상관관계 그래프를 히트맵으로 표현한 경우 많음.

    sns.heatmap()
    sns.heatmap(data_heatmap.corr(numeric_only = True))

    ★  annot= ? 주석
    ★  cmap =? 색상
     cmap = 'crest'

    sns.heatmap(
        data_heatmap.corr(numeric_only = True), 
        annot=True, #주석
        cmap="crest"
        )
    plt.title("heatmap")
    plt.show()

    cmap='viridis'

     
    cmap= 'coolwarm'

     
     

    데이터 시각화 파이썬 데이터분석