정형 데이터
- 일반적으로 csv, tsv
- Row = 데이터 1개 item
- Column = attribute(feature)
시계열 데이터 (Time-Series)
- 추세(Trend), 계절성(Seasonality), 주기성(Cycle)을 살핌
지리/지도 데이터
관계 데이터
- 객체는 Node, 관계는 Link
계층적 데이터
- 관계 중 포함관계가 분명한 데이터
- Tree, Treemap, Sunburst 등
분류
- 수치형(numerical) : 연속형(continuous), 이산형(discrete)
- 범주형(categorical) : 명목형(nominal), 순서형(ordinal)
마크(mark) : 점, 선, 면으로 이루어진 데이터 시각화
채널(chnnel) : 각 마크를 변경할 수 있는 요소들
전주의적 속성(Pre-attentive Attribute) : 주의를 주지 않아도 인지하게 되는 요소
Bar plot
- 범주(category)에 따른 수치 값을 비교하기에 적합
- 수직(vertical) : .bar(), x축에 범주, y축에 값 (default)
- 수평(horizontal) : .barh(), y축에 범주, x축에 값 (범주가 많을 때)
Multiple Bar Plot
- 플롯을 여러 개
Stacked Bar Plot
- 2개 이상의 그룹을 쌓음(stack)
- 맨 밑의 bar의 분포 이외는 파악이 힘듦
- .bar()에서는 bottom 파라미터, .barh()에서는 left 파라미터
- Percentage Stacked Bar Chart : 응용하여 전체에서 비율을 나타냄
Overlapped Bar Plot
- 2개 그룹만 비교
- 비교가 쉬움
- 투명도 조(alpha)
- Area plot에서 더 효과적
Grouped Bar Plot
- Matplotlib으로는 구현이 어려움 (.set_xticks(), .set_xticklabels())
Principle of Proportion Ink
- 실제 값과 그에 표현되는 그래픽으로 표현되는 잉크 양은 비례
- x축의 시작은 0
데이터 정렬
- Pandas에서는 sort_values(), sort_index()를 이용하여 정렬
- 시계열은 시간순, 수치형은 크기순, 순서형은 범주의 순서대로, 명목형은 범주의 값에 따라
- 여러 가지 기준으로 정렬을 하여 패턴을 발견
- 대시보드에서는 Interactive로 제공
공간 활용
- 가독성을 높임
- X/Y axis Limit (.set_xlim(), .set_ylime())
- Spines (.spines[spine].set_visible())
- Gap (width)
- Legend (.legend())
- Margins (.margins())
복잡함과 단순함
- 필요없는 복잡함, 무의미한 3D
- Grid (.grid())
- Ticklabels (.set_ticklabels())
- Text (.text(), .annotate())
ETC
- 오차 막대 (errorbar)
- 히스토그램(Histogram) : Bar 사이 Gap이 0인 경우
- 제목 (.set_title())
- 라벨 (.set_xlabel(), ,set_ylabel())
Line plot
- 시간/순서에 대한 변화에 적합 (시계열 분석)
- .line이 아니라 .plot()
- 색상(color), 마커(marker, markersize), 선의 종류(linestyle, linewidth)
전처리
- Noise의 인지적인 방해를 줄이기 위해 smoothing
추세
- 축을 0에 초점을 둘 필요가 없음
- 생략되지 않는 선에서 범위를 조정하며 관찰 (.set_ylim())
간격
- 규칙적인 간격 맞추고, 관측 값 마커 사용
보간
- Moving Average
- Smooth Curve with Scipy (scipy.interpolate.make_interp_spline(), scipy.interpolate.interpld(), scipy.ndimage.gaussian_filter1d())
- 일반적인 분석에서는 지양
이중 축(dual axis)
- 한 plot에 2개의 축 사용
- 같은 시간 축에 다른 종류의 데이터 (.twinx())
- 한 데이터에 대해 다른 단위 (.secondary_xaxis(), .secondary_yaxis())
- 함부로 사용 지양
ETC
- 범례 대신 라인 끝 단에 레이블을 추가
- Min/Max 정보 등을 추가 (annotation)
- 연한 색을 사용하여 uncertainty 표현 (신뢰구간, 분산 등)
Scatter plot
- 두 feature간의 상관 관계 확인(양의 상관관계 / 음의 상관관계 / 없음)
- 군집, 값 사이의 차이, 이상치 확인
- .scatter() 사용
- 색(color), 모양(marker), 크기(size)
Overplotting
- 투명도 조정
- 지터링(jittering) : 점의 위치를 약간씩 변경
- 2차원 히스토그램 : 히트맵을 사용하여 깔끔한 시각화
- Contour plot : 분포를 등고선을 하용하여 표현
요소와 인지
- 색 : 연속은 gradient, 이산은 개별 색상으로
- 마커 : 구별이 힘들고, 크기도 다름
- 크기 : 버블 차트(bubble chart)라고 부름, SWOT 분석 등에 활용
인과관계(causal relation)와 상관관계(correlation)
- 다름
추세선
- scatter의 패턴을 유추
ETC
- Grid 지양
- 범주형이 포함된 관계는 heatmap 또는 bubble chart 추천
Text
- Title, Label, Tick Label, Legend, Annotation(Text)
Color
- 범주형 (Categorical) : 독립된 색상으로 색의 차이로 구분
- 연속형 (Sequential) : 연속적인 단일 색조로 표현
- 발산형 (Diverge) : 중앙을 기준으로 발산
- 색상 대비(Color Contrast) : 명도 대비, 색상 대비, 채도 대비, 보색 대비
- 색각 이상 : 색맹, 색약
- Hue(색조), Saturate(채도), Lightness(광도)
Facet
- Figure는 큰 틀, Ax는 각 플롯
- plt.subplot(), plt.figure() + fig.add_subplot(), plt.subplots()
- figuresize, dpi, sharex, sharey, squeeze, aspect
- Grid Spec : Slicing(fig.add_grid_spec()), x, y, dx, dy 사용(fig.subplot2grid())
- 서브플롯, 사이드 : ax.inset_axes(), make_axes_locatable(ax)
Grid
- 무채색 (color), 맨 밑으로 (zorder), 큰 격자 / 세부 격자 (which='major','minor','both'), X축 / Y축 (axis='x','y','both')
- x+y=c : 절대적 합이 중요한 경우
- y=cx : 비율이 중요한 경우
- 동심원 : 가까운 포인트를 찾거나 특정 범위의 데이터
심플한 처리
- 선 추가, 면 추가
Theme Setting
Seaborn
- 실습을 통해 학습
Polar Plot
- 극 좌표계(Polar Coordinate)를 사용
- 회전, 주기성 표현에 적합
- projection = polar 추가하여 사용
- Scatter, Line, Bar 모두 가능
Data Converting
- 직교 좌표계 X, Y에서 변환 가능
Radar Plot (Star Plot)
- 극좌표계를 사용하는 대표적인 차트
- 데이터의 Quality를 표현하기 좋음 (강함, 분석, 비교 등)
- 각 feature는 독립적이며 척도가 같아야 함
- 면적이 중요해 보이지만 feature의 순서에 따라 크게 달라짐
- Feature가 많을수록 가독성이 떨어짐
Pie Chart
- 원을 부채꼴로 분할하여 표현
- 전체를 백분위로 나타낼 때 유용
- 많이 쓰지만 지양
Donut Chart
- 중간이 비어있는 Pie Chart
Sunburst Chart
- 계층적 데이터를 시각화하는데 사용
Missingno
- 결측치(missing value)를 체크하는 시각화 라이브러리
- pip install missingno
Treemap
- 계층적 데이터를 직사각형을 사용하여 포함 관계를 표현
- 모자이크 플롯(Mosaic plot)과 유사
- pip install squarify 혹은 Plotly 사용
Waffle Chart
- 와플 형태로 discrete하게 값을 나타내느 차트
- Icon을 사용 가능 (Pictogram Chart)
- pip install pywaffle
Venn
- 집합(set) 등에서 사용하는 익숙한 벤 다이어그램
- pip install pyvenn 혹은 pip install matplotlib-venn
'부스트캠프 AI Tech' 카테고리의 다른 글
[WEEK 4-5] CV 이론 (1) | 2023.11.30 |
---|---|
데이터 직군에 대한 지식 쌓기 (0) | 2023.11.30 |
[WEEK 3] DL Basic (0) | 2023.11.20 |
[WEEK 2] PyTorch (0) | 2023.11.13 |
[WEEK 1] AI Math (0) | 2023.11.09 |