티스토리 뷰
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)으로 녹인다
- pandas cheat sheet (https://pandas.pydata.org/Pandas_Cheat_Sheet.pdf)
- 국가통계데이터포털에서도 과거에는 집계데이터(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
- https://matplotlib.org/stable/tutorials/colors/colormaps.html
- colormaps ⇒ gradient로 보여줌. (_r 붙여주면 리버스)
- annot = True ⇒ 값을 히트맵에 표시해줌
- fmt=",.0f" ⇒ 숫자 표기방식(fmt)를 .0f(float을 소수점 0번째 자리까지, 천단위를 ‘,’로 구분한다.
- 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 :
- 같은 용도라도 라이브러리 개발자의 정의에 따라 사용법이 조금씩 다르다.
- 모든 내용를 알고 있을 수는 없기 때문에 필요할 때 공식문서와 사용예제 등을 참고해야 한다. => 문서를 읽는 연습이 되어야함.
'AI School : 파이썬, 데이터분석 > 정리노트' 카테고리의 다른 글
[WIL] 멋쟁이사자처럼 AI SCHOOL : 5주차 (0) | 2023.01.19 |
---|---|
[데이터분석] Pandas 기초 (0) | 2023.01.12 |
[WIL] 멋쟁이사자처럼 AI SCHOOL : 4주차 (0) | 2023.01.11 |
[데이터분석] 데이터 가져오기 : 크롤링(Crawling), API (0) | 2023.01.10 |
[데이터분석] DATA SCIENCE (0) | 2023.01.09 |