데이터 분석이란?
데이터 분석은 유용한 정보를 발굴하고 결론 내용을 알리며 의사결정을 지원하는 것을 목표로 데이터를 정리, 변환 모델링하는 과정입니다.
- 위키백과 -
데이터 파이프 라인
데이터를 한 장소에서 다른 장소로 차례대로 전달하는, 데이터로 구성된 일련의 시스템.
-
가져오기: 데이터 수집
데이터를 소스에서 수집하며, 저장할 수 있는 시스템으로 옮김.
-
준비: 데이터 처리
사용자와 응용 프로그램이 접근할 수 있는 시스템에서 정보를 사용 및 저장하기 위한 데이터를 준비. 일반적으로 정보는 데이터베이스에서 준비 및 저장. 관계형 데이터베이스 관리 시스템이 일반적으로 구조화된 데이터 세트를 처리. 일반적으로 정보는 데이터베이스에서 준비 및 저장. 관계형 데이터베이스 관리 시스템이 일반적으로 구조화된 데이터 세트를 처리.
-
분석: 데이터 모델링
데이터 파이프라인의 다음 단계에서 저장된 데이터를 분석, 모델링 알고리즘을 생성.
-
행동하기: 의사 결정
데이터를 가져오고, 준비하며, 분석한 후 바로 실행할 준비, 데이터 시각화 및 보고는 분석 결과를 전달하도록 지원.
- 인텔 -
여기서 말하는 데이터란?
구조화된 데이터를 의미합니다.
- 각 컬럼의 형식의 문자열, 숫자, 날짜 등으로 서로 다른 표 혹은 스프레드시트와 비슷한 데이터 (관계형 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
교집합
2. outer join
합집합
3. left join
N사 테이블 & 교집합
4. right join
H사 테이블 & 교집합
유니온(union)이란?
쪼개진 데이터를 합치는 작업 중 관련있는 컬럼을 기준으로 '열을 합치는 것'(수직)
1) 두 릴레이션은 같은 수의 속성(어트리부트)을 가져야 한다.
2) 해당 속성의 도메인(속성 값의 집합)은 동일해야 한다.
union all
중복을 포함
union
중복을 포함 X + 정렬
🙏 감사합니다
마지막으로 수업을 진행해주신 선린인터넷고등학교 이모션 동아리의 안유빈 선배님께 감사드립니다.
읽어주셔서 감사합니다.
😍 댓글