데이터 분석 Study 01

데이터 분석 공부의 1차시 내용을 정리한 글입니다.

# Data Science
title

데이터 분석이란?

데이터 분석은 유용한 정보를 발굴하고 결론 내용을 알리며 의사결정을 지원하는 것을 목표로 데이터를 정리, 변환 모델링하는 과정입니다.


- 위키백과 -





데이터 파이프 라인

데이터를 한 장소에서 다른 장소로 차례대로 전달하는, 데이터로 구성된 일련의 시스템.

  • 가져오기: 데이터 수집
    데이터를 소스에서 수집하며, 저장할 수 있는 시스템으로 옮김.

  • 준비: 데이터 처리
    사용자와 응용 프로그램이 접근할 수 있는 시스템에서 정보를 사용 및 저장하기 위한 데이터를 준비. 일반적으로 정보는 데이터베이스에서 준비 및 저장. 관계형 데이터베이스 관리 시스템이 일반적으로 구조화된 데이터 세트를 처리. 일반적으로 정보는 데이터베이스에서 준비 및 저장. 관계형 데이터베이스 관리 시스템이 일반적으로 구조화된 데이터 세트를 처리.

  • 분석: 데이터 모델링
    데이터 파이프라인의 다음 단계에서 저장된 데이터를 분석, 모델링 알고리즘을 생성.

  • 행동하기: 의사 결정
    데이터를 가져오고, 준비하며, 분석한 후 바로 실행할 준비, 데이터 시각화 및 보고는 분석 결과를 전달하도록 지원.

- 인텔 -





여기서 말하는 데이터란?

구조화된 데이터를 의미합니다.

  • 각 컬럼의 형식의 문자열, 숫자, 날짜 등으로 서로 다른 표 혹은 스프레드시트와 비슷한 데이터 (관계형 DB, 탭이나 쉼표로 구분가능한 txt파일 형식 데이터)
  • 다차원 배열
  • SQL에서 기본키나 외래키 같은 키 컬럼에 의해 서로 연관되는 여러가지 표
  • 일정하거나 일정하지 않은 간격의 시계열





사용 언어

보통 데이터 분석을 할 때 프로그래밍 언어로 Python 을 이용합니다.

그 이유는 Python 이 다양한 고급 라이브러리와 패키지들을 무료로 지원하기 때문입니다.

제 경험과 함께 덧 붙이자면 다른 언어에 비해 직관적이고 배우기 쉽다는 Python 의 장점이 연구에 더 집중할 필요가 있는 사용자들에게는 보다 유리하게 다가오기 때문이 아닐까 생각합니다.

그러나 Python 은 C언어와 달리 인터프린터 언어로 코드를 한줄한줄 읽어 실행하기에 컴파일 언어에 비해 느립니다.


Q. 은행 실시간 거래 시스템처럼 일분 일초가 생명인 어플리케이션에서는 인터프린터 언어와 컴파일 언어 중 무엇이 더 적합할까?

결론은 C언어와 같은 컴파일 언어가 더 적합하다고 할 수 있습니다.

그 이유로 첫 번째는 컴파일 언어는 속도(퍼포먼스)가 뛰어납니다. 두 번째로 컴파일 언어는 컴파일 과정에서의 버그 발견이 쉽기 때문에 작은 취약점이라도 치명적으로 다가올 수 있는 시스템에서 빛을 발합니다.





라이브러리

위에서 말했듯이 Python 에서는 데이터 분석에 필요한 많은 라이브러리들을 지원합니다. 여기서는 관련 라이브러리 6가지를 알아봅니다.

1. Numpy

· numerical python 의 약자

· Python 산술 계산의 주춧돌 같은 역할

· 자료 구조, 알고리즘, 산술 데이터 등 과학 계산에 필요한 라이브러리 제공

· 빠른 배열 처리 외에도 데이터 분석 알고리즘에 사용할 데이터 컨테이너 역할


기능

· 빠르고 효율적인 다차원 배열 객체인 ndarray

· 배열 원소를 다루거나 배열 간의 수학 계산을 수행하는 함수

· 디스크로부터 배열 기반의 데이터를 읽거나 쓸 수 있는 도구

· 선형대수 계산, 푸리에 변환, 난수 생성기

· Python 확장과 C, C++ 코드에서 numpy 의 자료구조에 접근하고 계산 기능을 사용할 수 있게 해주는 C api


2. Pandas

· 패널 데이터 (panel data) + 파이썬 데이터 분석 (python data analysis)

· 구조화된 데이터와 표 형식 데이터를 빠르고 쉽게 다룰 수 있는 자료구조 + 함수 제공

· Numpy 의 고성능 연산, 스프레드시트 & 관계형 DB 의 유연한 데이터 처리 기능

· 색인 기능을 제공 (데이터 변형, 자르기, 취합, 부분 집합 선택이 가능)

· 데이터 전처리 과정을 도움


3. Matplotlib

· 미국의 신경 생물학자가 데이터 연구 중 답답해서 개발

· 그래프 & 2차원 데이터 시각화 자료를 생성

· Python 의 타 라이브러리들과의 좋은 연동성


4. Scipy

· 복잡하고 어려운 과학 계산에 주로 이용

· Numpy 와 함께 사용하면 과학 계산 문제의 9할 이상은 해결이 가능


5. Scikit-learn

범용 머신러닝 도구로써 아래와 같은 모델의 하위 모듈을 포함

  • 분류 - SVM, 최근접 이웃, 랜덤 포레스트, 로지스틱 회귀 등
  • 회귀 - 라소, 리지 회귀 등
  • 클러스터링 - k-평균, 스펙트럴 클러스터링 등
  • 차원 축소 - PCA, 특징 선택, 행렬 인수분해 등
  • 모델 선택 - 격자 탐색, 교차 검증, 행렬
  • 전처리 - 특징 추출 정규화

6. Statsmodels

사용자가 데이터를 탐색하고 통계 모델을 추정하며 통계 테스트를 수행할 수 있는 패키지

  • 회귀 모델: 선형 회귀, 일반화 선형 모델, 로버스트 선형 모델, 선형 혼합효과 모델 등
  • 분산 분석
  • 시계열 분석
  • 비모수 기법: 커널 밀도 추정, 커널 회귀
  • 통계 모델 결과의 시각화

Scikit-learn 은 예측 위주, Statsmodels 는 통계와 추론 위주





조인과 유니온

· 관계형 DB 에서 사용되는 개념

· 둘 이상의 관계 데이터를 결합하는데 사용

데이터 분석을 위해 알아두면 좋은 개념입니다.


조인(join)이란?

쪼개진 데이터를 합치는 작업 중 관련이 있는 컬럼을 기준으로 '행을 합치는 것'(수평)


1. inner join

교집합

inner join



2. outer join

합집합

outer join



3. left join

N사 테이블 & 교집합

left join






left join2



4. right join

H사 테이블 & 교집합

right join






right join2




유니온(union)이란?

쪼개진 데이터를 합치는 작업 중 관련있는 컬럼을 기준으로 '열을 합치는 것'(수직)

1) 두 릴레이션은 같은 수의 속성(어트리부트)을 가져야 한다.

2) 해당 속성의 도메인(속성 값의 집합)은 동일해야 한다.


union all

중복을 포함

union all



union

중복을 포함 X + 정렬

union





🙏 감사합니다

마지막으로 수업을 진행해주신 선린인터넷고등학교 이모션 동아리의 안유빈 선배님께 감사드립니다.




읽어주셔서 감사합니다.

😍  댓글