본문 바로가기
빅데이터/헬로 데이터 과학

R로 데이터 과학 맛보기

by SH_L 2023. 7. 30.
반응형

[R의 기본 기능]

 

 

R에 기본적으로 mtcars 데이터 셋이 mtcars라는 이름으로 설치되어 있기 때문에 mtcars라는 명령어를 실행하면 데이터를 볼 수 있다. summary 함수를 사용하면 각 속성별로 값 분포를 볼 수 있다.

 

 

데이터를 파일로 저장하거나 불러들이는 데는 write.table()과 read.table() 함수를 사용한다. 다음은 mtcars 데이터를 파일로 저장하고 이를 cars라는 이름으로 다시 불러들이는 방법이다. 여기서 header=T 옵션은 데이터 파일의 첫 줄을 속성 목록으로 사용한다는 의미다. 앞으로는 원본 데이터인 mtcars 대신에 cars를 사용하여 실습을 진행한다.

 

 

R의 기본 자료형은 테이블 형태의 데이터 프레임이기에 대부분의 데이터는 한 화면에 들어오지 않는다. 그러므로 데이터의 첫 몇 항목만 보기 위해서는 head()라는 함수를 사용한다. head() 함수를 실행하면 다음과 같이 cars의 첫 6줄이 출력된다.

 

 

만약 첫 10줄을 보고 싶다면 다음과 같이 실행하면 된다.

 

 

head() 함수가 데이터의 첫 부분을 보여준다면 tail() 함수는 반대로 데이터의 마지막 부분을 보여준다.

 

 

 

R에서는 기본적으로 데이터의 각 행과 열에 이름이 주어진다. 주어진 데이터의 각 행과 열에 대한 이름은 rownames() 및 colnames() 함수를 사용하여 볼 수 있다.

 

 

 

[데이터 준비하기]

 

기존 속성값을 가공해서 새로운 속성을 만드는 방법을 알아보자. 실습 과정은 다음과 같다.

 

 

1. 각 행의 자동차명을 model이라는 속성으로 만든다.

2. word() 함수를 사용하여 model 속성의 첫 단어를 추출한다.

3. model 속성의 첫 단어를 추출하여 maker라는 속성을 만든다.

 

 

4. head() 명령으로 다시 살펴보면 두 개의 속성이 추가된 것을 알 수 있다.

 

이제 dplir 라이브러리를 사용하여 데이터를 본격적으로 가공해보자. 데이터 가공에는 행과 열을 선택하는 필터링과 셀렉션, 그룹을 만들어 통계값을 계산하는 집계, 데이터의 순서를 변경하는 정렬 등의 연산이 포함되는데 dplyr 라이브러리에서는 이런 개별 연산에 해당하는 다양한 함수를 제공한다. 데이터 가공 과정에서는 여러 기본 연산을 조합하는 경우가 있기에 '%>%' 기호를 사용하여 기본 연산을 연결할 수 있는 방법을 제공한다.

 

이제 데이터에서 필요한 행과 열을 선택하는 과정을 알아보자. 위에서 만든 cars 데이터에서 실린더 개수가 4개인 차의 제조사, 모델, 연비를 선택한다.

 

 

R에서 이 과정을 실행하는 명령과 그 결과는 다음과 같다.

 

이번에는 데이터를 집계하는 과정을 알아보자. 우선 집계를 위한 기준 속성을 선택하고, 집계된 그룹별로 계산할 통계 값을 적어주는 것이 순서다.

 

 

다음은 cars 데이터를 제조사별로 집계하고, mean() 함수를 사용해 각 그룹별로 연비의 평균을 구하는 과정을 보여준다.

 

마지막으로 두 테이블을 특정한 속성값을 기준으로 병합하는 과정을 알아보자. 이는 여러 원본과 가공 절차를 거친 데이터를 합쳐서 분석하고자 할 때 필수적인 과정이다.

 

 

다음은 원본 데이터인 cars와 제조사별 집계 데이터인 makers를 제조사명을 기준으로 병합하는 과정을 보여준다. 여기서 인자인 by="maker"는 제조사명을 기준으로 두 테이블을 병합하라는 의미이다.

 

 

 

[데이터 분석하기]

 

카테고리형 속성의 경우 교차 테이블을 사용해 전체적인 분포를 살펴볼 수 있다. R에서 개별 속성 및 두 속성 간의 값의 분포를 보기 위해서는 table() 함수를 이용한다.

 

 

다음은 cyl 속성값의 분포, cyl 및 gear 속성 간의 관계를 살펴보는 명령이다.

 

이제 R에서 데이터를 시각화하는 과정을 알아보자. R은 기본적으로 히스토그램, 분산 차트와 같은 다양한 시각화 기능을 제공한다. 고급 시각화 기능이 필요하다면 ggplot2 등의 라이브러리를 사용하면 된다.

 


 

수치형 속성의 분포를 보기 위해서는 보통 히스토그램을 사용한다. 다음은 mpg 속성값을 시각화하는 과정으로 15~20, 20~25 사이에 가장 많은 속성값이 위치한 것을 알 수 있다.

 


 

R에서 가장 흔히 사용하는 시각화는 두 속성 간의 관계를 한눈에 보여주는 분산 차트다. 다음은 무게(wt)와 연비(mpg) 속성 간의 관계를 보여주는 스케터플롯을 보여준다. 무게 증가에 따라 연비가 떨어지는 추세가 확연히 나타난다.

 

때로는 둘 이상의 속성의 관계를 관찰해야 하는 경우가 발생한다. R에서는 ggplot2 라이브러리에서 제공하는 qplot() 명령어를 사용하여 세 가지 이상의 속성 관계를 한눈에 볼 수 있다.

 


 

다음은 무게(wt)와 연비(mpg) 속성 간의 관계를 XY축에 나타내고, cyl 값을 모양으로 표시하는 사례다. 이때, factor() 함수는 숫자를 카테고리 형태의 데이터로 인식하라는 명령이다. 연비가 실린더 개수 및 무게와 상과 관계가 높음을 알 수 있다.

 

 

 

[작업의 효율성]

 

R과 같이 데이터 처리 코드를 통해 작업을 수행하는 방식은 작성된 코드를 손쉽게 반복 호출할 수 있다는 장점이 있다. 예를 들어 원본 데이터에 10단계 처리를 수행하여 데이터 가공을 완료했다고 하자. 메뉴로 작업하는 경우 데이터가 갱신될 때마다 상당 부분의 작업을 다시 해야 하지만 코드로 작업하는 경우 이미 작성된 코드에 입력 데이터만 바꿔 다시 실행하면 되므로 메뉴 기반 프로그램 보다 높은 효율성을 보여준다.

반응형