네이버 부스트캠프 AI Tech 2기

[08.10 Special 강의] 📊 기본적인 차트 활용

Jay x 2 2021. 8. 21. 19:27
728x90
반응형

Bar Plot

  1. 기본 Bar Plot범주에 따른 수치 값을 비교할 때 적합한 방법이다.(개별 비교, 그룹 비교 모두 적합)
    • Vertical(default) : X축 범주, Y축 값
    • Horizontal : Y축 범주, X축 값
  2. Bar Plot ? : 직사각형 막대를 통해 데이터의 값을 표현하는 차트/그래프이다.
  3. 다양한 Bar Plot
    • Multiple Bar Plot두개 이상의 그룹을 쌓아서 표현하는 방법 → Stacked Bar Plot단점 : 맨 밑의 bar 분포는 파악하기 쉽지만, 그 외 분포는 파악하기 어렵다.각 범주에 대해 전체 비율을 추가 → Percentage Stacked Bar Chart겹쳐서 그리는 방법 → Overlapped Bar Plot단점 : 보기가 좀 불편하다.(3개 이상일때)단점 : 구현이 좀 까다롭다.(Matplotlib에서), 그룹이 너무 많아도 가독성이 떨어진다.
    • 그룹별 범주에 따른 bar를 이웃되게 그리는 방법 → Grouped Bar Plot
    • 투명도 alpha를 조정해서 처리한다.
    • 장점 : 비율 정보는 보기 편하게 바꿀 수 있다.
  4. 더 정확한 Bar Plot: 실제 값과 그에 표현되는 그래픽으로 표현되는 잉크의 양은 비례해야 한다.또한 막대 그래프에만 한정되는 규칙이 아니다.
    더 정확한 정보 전달을 위해서 정렬은 필수이다.
    • 시계열 → 시간순
    • 수치형 → 크기순
    • 순서형 → 범주의 순서
    • 명목형 → 범주의 값 따라 정렬3-3) 적절한 공간 활용
      복잡하게 표현하면 화려하고 멋져보이지만, 가독성이 떨어지고 비교하기가 어렵다. 그래서 최대한 지양한다. (사람의 인지는 2차원일때 가장 높다. → 만약 3차원일 경우는 Interactive하게 보여주는 것이 효율적)
    • 또한 전달하고 하는 정보에 따라서 다르게 표현해야 한다.
    • 3-4) 복잡함과 단순함
    • 여백과 공간만 조정해도 가독성이 높아진다.(ex Matplotlib에서 bar plot은 ax에 꽉 차서 답답함)
    • 꼭 한가지 정렬이 정답이 아니라, 여러가지 정렬을 시도하면서 패턴을 발견하고 대시보드에서 Interactive하게 보여주는 것이 유용하다.
    • 정확한 차이를 보고 싶다? (EDA)
    • 추세나 비교를 하고 싶다. (Dashboard)오차 막대를 추가해 Uncertainty 정보를 추가할 수 있다.(errorbar)다양한 Text정보를 활용해 표현하기(제목이나 라벨)
    • Bar사이 갭이 0이면 → Histogram
    • 3-5) 기타
  5. Pandas에서 sort_values(), sort_index()를 사용해서 정렬한다.
  6. 3-2) 데이터 정렬하기
  7. ex) 가독성이 높다고 좋은 것은 아니다.
  8. 반드시 x축의 시작은 zero(0) !
  9. 3-1) 잉크양 비례의 원칙(Principle of Proportion Ink)

Line Plot

  1. 기본 Line Plot선 그래프라고 부른다. 연속적인 변화하는 값의 점을 찍고 이를 이어서 표현을 한다. 흐름과 추세를 나타내는데 사용한다.→ .plot() 함수를 사용한다.보통은 5개 이하의 선을 사용하는 것을 추천한다. 많이 중첩이 될 경우는 가독성이 하락한다.1-3) Line Plot을 위한 전처리Noise의 인지적인 방해를 줄이기 위해서 smoothing을 사용한다.(평균을 내서 등등)
  2. 시시각각 변동하는 데이터는 Noise로 인해 패턴 및 추세 파악이 어렵다.
  3. 그래서, 색상, 마커, 선의 종류(linestyle, linewidth) 로 구분을 한다.
  4. 1-2) Line Plot 요소
  5. 시계열 분석에 특화되어 있다.
  6. 1-1) Line Plot이란?
  7. 정확한 Line Plot계절성이나 주기에 예민하기 때문에 축자체를 0에 둘 필요는 없다.
    그래프 상에서 규칙적일 때 : 기울기 정보의 오해규칙적인 간격의 데이터가 아니면 각 관측 값에 점으로 표시하여 오해를 줄인다.2-3) 보간데이터에 Error나 Noise가 포함되어 있는 경우에 데이터의 이해를 돕는 방법이다.그래서 일반적 분석에서는 지양한다.한 plot에 대해 2개의 축을 이중 축이라고 한다.→ .twinx() 사용→ .secondary_xaxis(), .secondary_yaxis() 를 사용!2-5) ETC
    • 라인 끝 단에 레이블을 추가해서 식별에 도움을 주자.
    • Min/Max 정보는 추가주면 도움이 될 수 있다!
    • 보다 연한 색을 사용하여 uncertainty 표현 가능하다.(신뢰구간이나 분산 등)
  8. 그래도 이중 축을 그리는 것은 지양한다.
  9. 한 데이터에 대해 다른 단위를 사용한다.
  10. 같은 시간 축에 대해 서로 다른 종류의 데이터를 표현하기 위해서 축이 2개가 필요하다.
  11. 2-4) 이중 축 사용
  12. 문제는 없는 데이터를 있다고 생각할 수 있으며 작은 차이를 없앨 수가 있다.
  13. Line은 점을 이어 만드는 요소 → 점과 점 사이에 데이터가 없어서 이를 잇는 방법을 보간이라고 한다.
  14. 그래프 상에서 간격이 다를 때 : 없는 데이터에 대해 있다고 오해
  15. 2-2) 간격
  16. 너무 구체적인 Line Plot보다는 생략된 line plot이 나을 수 있다.(Grid, Annotate 등은 모두 제거한다. 또한 디테일한 정보는 표로 제공하는 것을 추천한다.)
  17. 2-1) 추세에 집중한다.

Scatter Plot[목적에 초점을 가지자!]

  1. 기본 Scatter Plot산점도 등의 이름으로 사용된다.색, 모양, 크기를 통해서 다양성을 줄 수 있다.(2차원 데이터 → N 차원 데이터로 확장이 가능하다): 상관 관계를 확인한다.: 세가지 확인이 가능하다!
  2. 목적
  3. → .scatter()
  4. Scatter Plot은 점을 사용해 두 feature간에 관계를 알기 위해 사용하는 그래프이다!
  5. 정확한 Scatter Plot점이 많아질 수록 점의 분포를 파악하기 힘들다!2-2) 점의 요소와 인지마커 : 거의 구분하기 힘들고 크기가 고르지 않다.2-3) 인과관계와 상관관계2-4) 추세선(그러나 추세선이 2개 이상이 되면 가독성이 떨어질 수 있다.)Grid 와 Scatter는 같이 쓰는 것을 지양한다.
  6. 그래서 범주형이 포함된 관계에서 heatmap 이나 bubble chart를 추천한다.
  7. 2-5) ETC
  8. 추세선을 사용하면 scatter 패턴을 유추할 수 있다.
  9. 인과 관계 ≠ 상관관계! → 꼭 고민해야하는 부분이다.
  10. 크기 : 버블차트라고 부른다. 구별하기 쉽지만 오용하기 쉽다. 관계보다는 비율에 초점을 두면 좋다! SWOT 분석 등에 활용 가능하다.
  11. 색 : 연속은 gradient, 이산은 개별 색상
  12. 2-1) Overplotting

[수업 회고]

  • 원래 matplotlib을 사용해서 시각화를 해본 적있었는데, 생각보다 크기나 배치하는 것에 어려움이 있었다.
  • 강의를 보고 기본적인 것 부터 알게 되어서 다음에 시각화를 적극적으로 사용해 봐야겠다.
  • Line, Scatter, Bar Plot 의 각각 특징을 잘 살려서 활용해야겠다.
  • 시각화에는 정답이 없다고 하고, 읽는 사람에게 원하는 정보만 잘 전달되면 된다고 한다.
반응형