티스토리 뷰

EDA 기초

 : EDA 미니 프로젝트 피드백, 분석하기 좋은(tidy) 데이터란? (0304 전국 신규 아파트분양가 데이터)

 : melt를 활용한 데이터 전처리 (0305 kosis 수출입데이터)

 : folium, plotly 를 활용한 지리정보 시각화 (0306 지역별 버거지수 구하기)

 : 인사이트 데이, 메타인지타임, 미드프로젝트 예고

 

 

TIDY DATA : 어떤 데이터가 분석하기 좋은 데이터일까?

* “각 변수가 열이고 관측치가 행이 되도록 배열된 데이터” Hadley Wickham, Journal of Statistical Software (http://vita.had.co.nz/papers/tidy-data.pdf)

 

long-form vs wide-form

  • long-form
    : 변수(예. 연도, 월별)에 따라 x, y, hue(color), col 등을 지정해서 사용하기에 좋음.
    : 각 행이 개별 관측치를 나타내는 데이터 (ex. 코로나 확진자 데이터)
  • wide-form
    : pandas plot()으로 막대의 색상을 다르게 지정하거나, 서브플롯을 그리거나, 시각화 하기에 좋음.
    : 집계 데이터
  • (무조건 long-form이 좋은 것은 아님)

melt() 

데이터가 wide-form으로 되어 있다면? => melt를 이용해서 열(cloumns)에 있던 데이터를 행(Row)으로 녹인다

  • 국가통계데이터포털에서도 과거에는 집계데이터(wide-form) 데이터로만 제공되어서 모두 meltf를 사용해줘야 했지만, 최근에는 포털 자체에서 행렬전환기능도 제공해주고 있음. 

 

데이터 전처리, 저장, 관리, …

  • 데이터는 관리, 속도 이슈로 보통 수치 형태의 코드값으로 관리함.
    • 중복된 텍스트가 많이 들어가게 되면 용량이 그만큼 늘게 됨.
    • 용량이 크면 데이터의 로드, 전처리, 연산이 오래 걸리게 됨.
    • ex. 아파트분양가격 실습데이터에서 [’규모구분’]의 ‘전용면적’ 중복
  • 데이터 저장
    • DB : 실시간성으로 조회, 회원가입데이터, 캐릭터 정보, 인벤토리 정보
    • file : 로그데이터(이력) → 보통 사용자 행동 정보는 따로 관리해 주는 툴이 있기도 함 (Amplitude)
  • 데이터 관리 / 툴
    • SQL : DB추출용으로 주로 사용 ⇒ 파일로 가공해서 판다스 등으로 전처리해서 분석하기도 함.
    • DB : 보통 분석가에게는 읽기권한만 주고 라이브 DB권한을 주지 않음 (특히 개인정보 등은 아무나 조회할 수 없도록)
    • Dash Board : 정제한 데이터를 DB에 쌓아서 보여주기도 함. 너무 많은 레코드에 접근해서 반복된 작업을 한다면 보여줄 내용만 가공해 놓고 따로 관리하기도 함. (전체 DB에서 바로 가져오려면 비용/처리량 증가)

 

시각화 방법

plt.figure(figsize=(15, 10))
sns.heatmap(y_region_price.T, cmap="Greys_r", annot=True, fmt=",.0f");
  • 히트맵 heatmap
  • barplot, pointplot
    • errorbar : 검은막대는 신뢰구간(confidence interval)을 의미 (이전버전은 ci로 표기) → 빠르게 볼 때는 errorbar = None 으로 함.
    • 대표값(평균, 합계 등) 을 나타내기에는 좋지만, 이 대표값들만으로 데이터 전체를 설명하기는 어려움. boxplot, violinplot
  • boxplot, violinplot, swarmplot, stripplot
    • 데이터의 분포를 볼 수 있음

 

데이터 전처리 (특정 그룹별로 묶어줄 때)

  • groupby
    : value_counts, unstack, fillna, astype, sum(axis =1) 와 함께 사용해줌.
  • pivot_table
    : groupby를 랩핑해놓은 기능 => 간단함.
    : margins, margins_name 옵션
  • crosstab
    : pivot_table을 랩핑해놓은 기능.
    : margins, margins_name 옵션

 

데이터분석

  • 결측치가 있을 때 처리 방법?
    : 버거지수를 구할 때 롯데리아의 갯수가 분모로 들어가는데, 롯데리아 지점수가 0개인 지역에서는 지수가 inf로 나온다. 
    • Na, 결측치, 오류값을 0으로 처리해도 되는 경우가 있고, 그렇지 않은 경우가 있다.
    • 일반적으로 빈도수의 경우는 0으로 채워도 무관하다.
    • 하지만 0값이 의미가 있는 경우 계산에 영향을 주게 된다.=> 잘못된 결과가 도출될 확률 높아짐.
    • => 결측치를 제외하거나, 구간화(Binning)하는 등의 방법을 고민해봐야 한다.
  • 상관분석 corr()
    • 두 변수간 '관계'를 분석한다. => 여기서 관계는 인과관계를 의미하는게 아니다.
    • 인과관계는 회귀분석으로 인과의 방향, 정도, 수학적 모델 등을 확인한다.

 

지도 시각화

  • circleMarker
  • choropleth
  • plotly choropleth와 folium choropleth : 
    • 같은 용도라도 라이브러리 개발자의 정의에 따라 사용법이 조금씩 다르다.
    • 모든 내용를 알고 있을 수는 없기 때문에 필요할 때 공식문서와 사용예제 등을 참고해야 한다. => 문서를 읽는 연습이 되어야함.
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함