자격증 공부/ADsP

[ADsP] ADsP 요점정리 : Part 3. 데이터 분석 개요 / R 프로그래밍 기초

guoyee94 2024. 10. 16. 23:57

ADsP 국룰이라는 민트책. ADsP 탭 대문은 너로 정했다.

 

 

2주 남짓(!) 남기고 시작하는 ADsP 대비.

 

KT 에이블스쿨을 진행하고 있어 데이터분석 자체는 해 볼 만 하겠지만

 

시험 치는 건 또 다른 문제지 ㅎㅎ..

 

Part 3이 제일 분량이 많으니 Part 3 부터 정리 시작한다.

 

이 포스팅은 철저하게 내가 보려고 하는 포스팅이므로,

 

'내가 이건 안 해도 된다!'싶은 부분은 생략하고 진행되는 점 참고 바람.

 

 


3 - (1). 데이터 분석 개요

 

데이터 분석이란건 종류가 나뉘어 있다기보단,

여러 기법을 적재적소에 활용해야 하는 것이라고 생각한다.

 

그래서 3-1에서도 데이터 분석의 주요 기법을 설명하고 있다.

 

구체적인 기법으로는

시각화 가장 낮은 수준의 분석
탐색적 분석에 유용함
SNA(Socail Network Analysis, 사회연결망분석)에 잘 쓰인다.
공간분석
(Spatial Analysis)
공간과 관련된 속성들을 시각화하는 분석
GIS(Geographic Information System)을 구축한다. 
탐색적 자료 분석
(EDA)
데이터의 특이점이나 의미있는 사실 도출 목적
데이터간의 구조적 관계에 집중
4가지 메인 주제
 - 저항성 강조
 - 잔차 계산
 - 자료변수의 재표현
 - 그래프를 통한 현시성
통계분석

기술통계  표본이 가진 정보를 탐색
추측통계 표본으로부터 모집단의 특성(모수)를 통계적으로 추론
데이터마이닝 대용량 데이터 취급
데이터베이스 / 머신러닝 / 패턴인식 활용
머신러닝 : 인공신경망, 의사결정나무, 클러스터링, 베이지안분류, SVM
패턴인식 : 장바구니분석, 연관규칙

 

 

데이터 분석 개요는 말 그대로 이렇게 끝.

 

본격적인 내용 정리 드가자

 

 

 

 

 


3 - (2). R 프로그래밍 기초

 

R은 통계-데이터마이닝-시각화에 특화된 오픈소스 프로그램이자 언어이다.

 

기본적으로 객체지향, 함수형 언어이다. 어차피 난 Python밖에 모른다.

 

기본적으로 데이터 전처리를 위해 R과 R studio를 활용하며,

파이썬의 pandas, numpy, seaborn처럼 전처리 패키지를 활용한다.

 

전처리 과정에서 요약변수, 파생변수라는 말을 쓰는데,

요약변수는 값이 수집된 feature, 파생변수는 탐색을 통해 추가적으로 도출한 feature를 말한다.

 

  • reshape : meltcast(재구조화)를 지원
  • sqldf : R에서 SQLDataFrame을 다루게 해 줌
  • plyt : apply 함수 기반 데이터 처리
  • data.table : 컬럼별 인덱스로 빠른 처리가 가능한 데이터 구조

 

<R 자료형>

숫자 Numeric 3.1415
숫자 벡터 Numeric c(1, 2, 3, 4)
문자열 Character 'Hwang'
문자열 벡터 Character c('Hwang', 'Seok')
요인 Numeric factor('A', 'B', 'C')
범주형 데이터 표
리스트 List list('A', 'B', 'C')
변수에 저장하면 그 변수가 key가 됨
데이터프레임 List data.frame(x=1:3, y=c('Hwang', 'Seok', 'Kim'))
함수 Function  
스칼라   요소가 하나인 벡터
행렬   2차원 벡터
배열   n차원 벡터(n>2)

 

특히 신경써야 할 자료형은 벡터와 데이터프레임이다.

 

벡터

* 다른 언어의 배열과 유사한 개념이다.

* 하나의 자료형만 가질 수 있다.

* 만약 복수의 자료형이 입력된다면 ex) a <- c(1, 'A', True)

  우선순위에 따라 나머지 원소들을 자동으로 형변환한다.

   (우선순위 높은것부터 : 문자형 -> 복소수형 -> 실수형 -> 정수형 -> 논리형)

* 재활용 규칙 : 서로 길이가 다른 벡터를 연산할 때, 짧은 쪽은 연산이 끝날 때까지 재사용된다.

                         이때 두 배열이 배수 관계가 아니라면 경고 메시지도 출력된다.

ex) c(1, 2, 3, 4, 5, 6) + c(5, 6) = 6, 8, 8, 10, 10, 12

 

데이터프레임

* 데이터프레임은 메모리상에서 구동되며, 각 열마다 자료형이 구분되어 있다.

* 데이터프레임의 원소는 벡터 또는 요인이다. (= 각각의 열)

 


 

<R 기초문법>

a = n, a <- n   변수 a에 값을 할당함.
'=' 뿐만 아니라 화살표를 쓰는게 신기하다.
화살표는 방향 무관하게 쓸 수 있다는 장점(?)
c() a = c(1,2,3,4)
a = c('abc', 'def', 'hij')
a = c(x, y, z)
자료형에 무관하게 하나의 결합된 데이터셋을 생성함
심지어 변수도 결합 가능
n:m 1:9 1에서 9까지의 수열을 생성, 역순으로도 가능
파이썬 슬라이싱이랑 다르게 끝 수도 포함된다.
seq() seq(from=0, to=30, by=2) 시작수, 끝수까지 step별로 증가하는 수열
by 대신 length.out도 쓸 수 있음
rep() rep(1, time=15)
rep(1:3, time=15)
rep(1:3, each=15)
1을 15번 반복
1, 2, 3을 15번 반복
1과 2와 3을 각각 15번 반복
paste() a <- paste('a', 'b', 'c', sep=' ') a b c를 공백으로 연결시켜줌
substr() substr(Congratulation, 4, 7) Congratulation의 4번째에서 7번째까지 문자열 추출

 


 

<R 연산자 및 기호(파이썬과 같은 것은 제외)>

$ a$coef 요소 뽑아내기
~ lm(log(brain)~log(body), data = Animals)
== 일반적 비교연산자와 같음
iterable한 객체에 쓰면 각 인덱스를 순환하며 bool 반환
Na 결측치
NaN은 Not a Number이다.(...)

 

 


<데이터프레임 함수>

rbind rbind(df1, df2) row_bind = 행 기준 결합
cbind rbind(df1, df2) column_bind = 열 기준 결합
subset subset(df, select=변수, subset=조건) 데이터 조회

 

 

<기출 함수>

sqrt() 제곱근 반환
summary() 기초통계량 출력, 범주에 쓰면 pd.value_counts() 효과