ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [주간학습 정리] Week 3
    Naver AI Tech 2024. 8. 23. 13:34

     


    이번 주 학습 한 내용 중
    인상 깊은 것과 과거에 사용 안 해본 것을 기록하자

     

    1. 데이터 문해력을 기르자

    1. 데이터 문해력이란 데이터를 읽고 이해하고 이를 바탕으로 분석결과를 전달하는 능력이다.
    2. 데이터 문해력의 핵심 역량 중 하나는 문제를 잘 정의하고 질문을 잘 하는 것이다.
    3. 좋은 문제해결 접근방법은 문제를 먼저 정의 한 후 그에 맞는 데이터를 수집하여 문제를 해결하는 것이다.

    즉, 문제정의와 데이터를 이해하고 분석하는 능력을 기르자!

    [Reference: 데이터 리터러시란 | 정의와 역량, 필요성, 활용 방법과 성공 사례]

     

     

    2. 다양한 데이터 시각화

    1. 시각화 그래프(차트)는 매우 다양하다.
    2. 안써본 도구나 방법 등에 대해 알아보자.
    3. 이 외에도 다양한 그래프가 있으므로 다양한 시각화 자료를 보고 생각하자.

     

    Text vs Annotation

    '''
    text 와 annotate
    특히 annotate를 이용해서 화살표 그리기
    '''
    fig = plt.figure()
    ax = fig.add_subplot(111)
    ax.plot([1, 1, 1], label='1')
    ax.plot([2, 2, 2], label='2')
    ax.plot([3, 3, 3], label='3')
    
    ax.set_title('title')
    ax.set_xticks([0, 1, 2])
    ax.set_xticklabels(['zero', 'one', 'two'])
    
    ax.text(x=1, y=2.5, s='#1 text')    # text 추가 방법 1
    ax.annotate(text='#2 annotate', xy=(1, 1.75))    # text 추가 방법 2
    ax.annotate(text='#3 annotate with arrow',
                xy=(1, 1.25),
                xytext=(1, 1.5),
                arrowprops=dict(facecolor='black')
                )    # text 추가 방법 3 + 화살표 추가
    
    ax.legend()
    plt.show()

     

    '''
    text
    
    - Text Properties and layout
    (https://matplotlib.org/stable/users/explain/text/text_props.html)
    
    '''
    
    fig, ax = plt.subplots()
    ax.set_xlim(0, 10)
    ax.set_ylim(0, 10)
    
    ax.text(x=3, y=6, s='This is \nText',
            fontsize=20,
            fontweight='light',    # normal, bold, heavy, light, ultrabold, ultralight
            fontfamily='monospace',    # serif, sans-serif, cursive, fantasy, monospace
            color='blue',
            linespacing=2,
            va='center', # top, bottom, center
            ha='center', # left, right, center
            rotation='horizontal', # vertical?
            bbox=dict(boxstyle='round', facecolor='gray', alpha=0.4)
           )
    
    ax.annotate(text='This is annotate',
                xy=(4.4, 4.8),
                xytext=(6, 3),
                bbox=dict(boxstyle='round', facecolor='gray', alpha=0.4),
                arrowprops=dict(arrowstyle='->'),
                zorder=10
                )
    
    plt.show()

     

     

    sharey

    '''
    bar plot
    - sharey
    
    '''
    x = list('ABCDE')
    y = np.array([1, 2, 3, 4, 5])
    clist = ['blue', 'gray', 'gray', 'gray', 'red']
    color = 'green'
    
    fig, axes = plt.subplots(1, 2, figsize=(10, 5))
    fig.suptitle('color')
    axes[0].bar(x, y, color=clist)
    axes[1].barh(x, y, color=color)
    
    fig, axes = plt.subplots(1, 2, figsize=(10, 5), sharey=True)    # y label 공유
    fig.suptitle('sharey')
    axes[0].bar(x, y, color='blue')
    axes[1].bar(x, y[::-1], color='red')
    
    plt.show()

     

    Countplot

    '''
    Countplot
    - 범주를 이산적으로 세서 막대 그래프로 그려주는 함수
    - 데이터프레임에서 원하는 열의 각각의 고유한 값의 개수를 세어 그래프로 표현함
    '''
    
    sns.countplot(x='race/ethnicity',data=student,
                  hue='gender',
                  palette='dark:red',
                  order=sorted(student['race/ethnicity'].unique())
                 )

     

    Violin Plot

    '''
    Violin Plot
    - 흰점이 50%, 중간 막대가 IQR 범위를 의미함
    '''
    
    fig, ax = plt.subplots(1,1, figsize=(12, 5))
    sns.violinplot(x='math score', data=student, ax=ax,
                   bw_method=0.1,
                   cut=0,
                   hue='gender',
                   inner='quartile'
                  )
    plt.show()

     

    boxen plot, swarm plot, strip plot

    '''
    boxen plot
    swarm plot
    strip plot
    '''
    
    fig, axes = plt.subplots(3,1, figsize=(10, 15))
    sns.boxenplot(x='race/ethnicity', y='math score', data=student, ax=axes[0],
                   order=sorted(student['race/ethnicity'].unique()))
    
    sns.swarmplot(x='race/ethnicity', y='math score', data=student, ax=axes[1],
                   order=sorted(student['race/ethnicity'].unique()))
    
    sns.stripplot(x='race/ethnicity', y='math score', data=student, ax=axes[2],
                   order=sorted(student['race/ethnicity'].unique()))
    plt.show()

     

    scatter, hist, kde

    '''
    scatter
    hist plot
    kde plot
    '''
    
    fig, axes = plt.subplots(1,3, figsize=(12, 4))
    ax.set_aspect(1)
    
    axes[0].scatter(student['math score'], student['reading score'], alpha=0.2)
    
    sns.histplot(x='math score', y='reading score',
                 data=student, ax=axes[1],
                 color='orange',
                 cbar=False,
                 bins=(10, 20),
                )
    
    sns.kdeplot(x='math score', y='reading score',
                 data=student, ax=axes[2],
                fill=True,
                )
    
    plt.show()

     

     

     

     

    'Naver AI Tech' 카테고리의 다른 글

    [주간학습 정리] Week 6  (2) 2024.09.13
    [주간학습 정리] Week 5  (1) 2024.09.06
    [주간학습 정리] Week4  (0) 2024.08.30
    [주간학습 정리] Week 2  (0) 2024.08.16
    [주간학습 정리] Week 1  (0) 2024.08.09

    댓글

© 2019 All rights reserved.