EDA (Exploratory Data Analysis)는 탐색적 데이터 분석으로, 데이터를 다양한 각도에서 관찰하며 데이터를 이해하는 과정을 의미한다.
EDA가 필요한 이유는 다음과 같다.
EDA 실습을 위해 https://github.com/CSSEGISandData/COVID-19 에서 코로나 바이러스 데이터를 다운로드 받았다. 이중, 2020/3/31의 데이터를 활용할 예정이다.
import pandas as pd doc = pd.read_csv("03-31-2020.csv",encoding='utf-8-sig')
에러가 나는 데이터가 존재할 경우, error_bad_lines=False로 생략하는 것이 일반적이다
import pandas as pd doc = pd.read_csv("파일명", encoding='utf-8-sig', error_bad_lines=False)
pandas는 가장 앞 sheet의 데이터를 읽는다.
특정 sheet를 읽기 위한 방법은 다음과 같다.
pd.read_excel(파일명, sheet_name=sheet명)
head(), tail()을 사용하여 가장 앞,뒤의 데이터를 5개 읽을 수 있다.
이런 과정을 거치는 이유는 데이터의 오류나 누락이 없는지 확인하기 위해서이다.
doc.head()
doc.tail()
doc.shape
doc.info()
doc.columns
속성이 숫자라면 describe을 통해 평균, 표준편차, 4분위수, 최대값, 최소값을 확인할 수 있다.
doc.describe()
속성 간 상관관계는 corr을 통해 확인할 수 있다. 이때 디폴트는 피어슨 상관계수이다. 피어슨 상관계수는 선형 상관 관계를 조사하며,
최신 pandas에서는 corr()이 자동으로 문자컬럼을 제외해주지 않기 때문에 numeric_only=True를 추가해야 한다.
doc.corr(numeric_only=True)
위의 결과를 통해 confirmed, deaths, recovered, active 간의 상관관계가 유의미하다는 것을 확인할 수 있다.
데이터를 시각화하면 이러한 상관관계를 더 가시적으로 확인할 수 있다.
데이터 시각화를 위해 기존에는 matplotlib, seaborn을 주로 사용했다. 하지만 최근에는 plotly를 주로 사용하는 추세이다. 코드에 대한 설명은 다음과 같다.
%matplotlib inline import matplotlib.pyplot as plt import seaborn as sns plt.figure(figsize=(5,5)) sns.heatmap(data = doc.corr(), annot=True, fmt = '.2f', linewidths=0.5, cmap='Blues')
이를 통해 예상과 같이 confirmed, deaths, recovered, active 간의 상관관계가 유의미하다는 것을 확인할 수 있다.