본문 바로가기

머신러닝

머신러닝 심화과정(데이터분석 프로세스) - 데이터 수집, EDA

1. 데이터 수집

  1. Data Source
    • OLTP Database: OnLine Transaction Processing 은 온라인 뱅킹,쇼핑, 주문 입력 등 동시에 발생하는 다수의 트랜잭션(데이터베이스 작업의 단위) 처리 유형
    • Enterprise Applications: 회사 내 데이터 (ex 고객 관계 데이터, 제품 마케팅 세일즈, 입사, 연봉)
    • Third - Party: Google Analytics와 같은 외부소스에서 수집되는 데이터(제 3자로부터 가져오는 데이터)
    • Web/Log: 사용자의 로그데이터
  2. Data Lake: 원시 형태의 다양한 유형의 데이터를 저장
  3. Data Warehouse: 보다 구조화된 형태로 정제된 데이터를 저장
  4. Data Marts: 회사의 금융, 마케팅, 영업 부서와 같이 특정 조직의 목적을 위해 가공된 데이터
  5. BI/Analytics: business Intelligence(BI)는 의사결정에 사용될 데이터를 수집하고 분석하는 프로세스

참고) ETL (Extract, Transform, Load) 추출, 변환, 로드 - 데이터 엔지니어 담당

 

## 실제 데이터 수집 ##

 

- 회사 내 데이터가 존재한다면

  >> SQL 혹은 Python 을 통해 데이터 마트를 생성

 

- 회사 내 Data가 없다면 → 데이터 수집 필요

  >> 방법1 : CSV, EXCEL 파일 다운로드

  >> 방법2 : API를 이용한 데이터 수집

  (Application Programming Interface : 응용 프로그램 개발자들이 애플리케이션을 만들 때 운영체제에서 동작하는 프로그램을 쉽게 만들 수 있도록 화면 구성이나 프로그램 동작에 필요한 각종 함수를 모아놓은 것)

  >> 방법3 : Data Crawling

  자동화된 방법으로 수집, 분류, 저장하는 것

2. 탐색적 데이터 분석(EDA, Exploratory Data Analysis)

데이터의 시각화, 기술통계 등의 방법을 통해 데이터를 이해하고 탐구하는 과정 - 범주형, 연속형, 관측치

■ tips 데이터를 이용한 EDA 예시

tips.head(3)
# include ='all' 범주형 데이터도 확인 가능
tips.describe(inclue='all')

 

1. countplot : 범주형 자료의 빈도수 시각화 - 범주형 데이터의 각 카테고리별 빈도수를 나타낼 때

x축 : 범주형 자료

y축 : 자료의 빈도수(입력 안해도 됨) - 관측치(count)

sns.countplot(x = 'day', data = tips)

 

2. barplot : 범주형 자료의 시각화 - 범주형 데이터의 각 카테고리에 따른 수치 데이터의 평균을 비교

x축 : 범주형 자료

y축 : 연속형 자료

# barplot : X축 범주형, Y축 연속형
# estimator 기본값은 mean(평균)
sns.barplot(data = tips, x = 'sex', y = 'tip', estimator = 'sum')

 

3. boxplot : 수치형 & 범주형 자료의 시각화 - 데이터의 분포, 중앙값, 사분위 수, 이상치 등을 모두 표현하고 싶을 때

x축 : 수치형 or 범주형

y축 : 수치형 자료

# 식사 시간(time)별 total_bill의 분포
sns.boxplot(x = 'time, y = 'total_bill, data = tips)

 

4. histogram : 수치형 자료 빈도 시각화 - 연속형 분포를 나타내고 싶을 때, 데이터가 몰려있는 구간을 파악하기 쉬움

x축 : 수치형 자료

y축 : 자료의 빈도수(입력 안해도 됨) - 관측치(count)

# bins는 몇 개 단위로 막대를 설정할 것인지
sns.histplot(data = tips, x = 'total_bill', bins = 20)

# 모두 동일한 그래프
plt.hist(tips['total_bill'])
tips['total_bill'].hist()
tips['total_bill'].plot.hist()

plt.show()

 

5. scatterplot : 수치형끼리 자료의 시각화 - 두 연속형 변수간의 관계를 시각적으로 파악하고 싶을 때

x축 : 수치형 자료

y축 : 수치형 자료

sns.scatterplot(x = 'total_bill', y = 'tips', data = tips)

 

6. pairplot : 전체 변수에 대한 시각화 - 한 번에 여러 개의 변수를 동시에 시각화 하고 싶을 때

x축 : 범주형 or 수치형 자료

y축 : 범주형 or 수치형 자료

sns.pairplot(data = tips)