AI Big Data/R

데이터 프레임 이해하기

retro_blue 2020. 7. 19. 20:26
반응형

데이터 프레임(Data Frame)은 행과 열로 구성된 사각형 모양의 표처럼 생겼습니다.

가장 많이 사용하는 데이터의 형태입니다.

 

대학교 학년 성별 점수
서울 1 84
연세 3 96
성균관 4 89
한양 2 93

저번에 만들었던 데이터 프레임을 가져왔습니다. 4개의 행, 4개의 열로 구성되어 있는 데이터 프레임입니다.

열은 대학교, 학년, 성별, 점수의 네 가지 속성으로 되어 있으며, 행을 보면 4명의 학생의 자료라는 것을 알 수 있습니다.

 

세로로 나열되는 속성을 나타냅니다. '컬럼(Column)' 또는 '변수(Variable)' 라고 불립니다.

가로로 나열되는 은 각 사람에 대한 정보를 나타내줍니다. 'Row' 또는 '케이스(Case)'라고 불립니다.

 

이렇게 한 명에 대한 데이터는 가로 한 줄로 나열됩니다.

한 명이 될 수도 있고, 하나의 거래 내역, 하나의 기록 등 무엇이든 하나의 단위가 하나의 행으로 구성되는 것입니다.

 

데이터가 크다라는 말이 있습니다. 이것은 행이 많거나 혹은 열이 많은 경우를 말합니다.

행이 많은 경우엔 컴퓨터가 느려지고 고사양의 장비를 구축할 필요성이 생깁니다.

반면 열이 많은 경우에는 변수를 조합할 수 있는 경우의 수가 늘어나게 됨으로써 분석 방법의 한계가 오게 됩니다. 따라서 고급 분석 방법의 필요성이 증가합니다.

 

 

1. 데이터 프레임 만들기 - 시험 성적 데이터 제작

 

데이터를 직접 입력하여 데이터 프레임을 만들어 보겠습니다.

다섯 명의 학생이 국어 시험과 역사 시험을 봤다고 가정하겠습니다.

 

이름 국어 점수 역사 점수
박혁거세 91 81
온조 80 56
고주몽 64 77
왕건  79 95
이성계 100 68

데이터 프레임을 만들 때는 data.frame()을 이용하면 됩니다.

데이터 프레임을 구성할 변수를 괄호 안에 쉼표로 나열하면 됩니다.

 

이번에는 기존의 데이터 프레임에 각 학생들의 도덕 점수(moral)를 추가하겠습니다.

 

 

 

 

 

 

 

- mean()을 이용해 데이터 프레임 속 각 속성에 대한 평균 값을 산출해보았습니다.

 

- df_exam$korean 은 'df_exam' 데이터 프레임 안에 있는 'korean' 변수를 의미합니다.

 

- 달러 기호 ($)데이터 프레임 안에 있는 변수를 지정할 때 사용됩니다.

 

 

 

 

 

 

 

 

 

- 데이터 프레임을 한 번에 만드는 방법도 있습니다.

 

- data.frame() 안에 변수와 값을 나열해서 한 번에 데이터 프레임을 생성했습니다.

 

- 코드가 길어지는 경우 Enter를 통해 구조가 한 눈에 들어올 수 있게 만들어주면 코드를 이해하기 쉽고 오류 찾기가 편해집니다.

 

 

 

 

 

 

## 연습문제

Q1. data.frame()과 c()를 조합하여 표의 내용을 데이터 프레임으로 만들어 출력해보시오.

 

전자제품 가격 (만원) 판매량
노트북 150 14
태블릿 80 25
핸드폰 120 31

 

Q2. 앞에서 만든 데이터 프레임을 이용해 전자제품 가격의 평균, 판매량의 평균을 구해보시오.

 

 

 

2. 외부 데이터 이용하기 - 축적된 시험 성적 데이터 불러오기

 

데이터를 관리할 때 가장 많이 사용되는 엑셀 파일과 csv 파일을 불러와 데이터 프레임을 만드는 방법을 익혀 보겠습니다.

 

2-1. 엑셀 파일 불러오기

 

프로젝트 폴더인 easy_r 폴더 안에 excel_exam.xlsx 라는 엑셀 파일을 넣어두었습니다.

이제 excel_exam 파일을 불러오도록 하겠습니다.

 

먼저 엑셀 파일을 불러오려면 엑셀 파일을 불러오는 기능을 제공하는 패키지를 이용해야 합니다.

readxl 패키지를 설치하고 로드합니다.

readxl 패키지에서 제공하는 read_excel() 함수를 이용하여 엑셀 파일을 불러왔습니다.

read_excel()은 엑셀 파일을 데이터 프레임으로 만드는 기능을 합니다

 

만약 프로젝트 폴더 내부에 파일이 있지 않은 경우엔 파일 경로를 지정하면 됩니다.

경로를 지정할 때는 슬래시(/)를 사용합니다.

 

df_exam <-read_excel("E:/R Project/easy_r/excel_exam.xlsx")

mean()을 이용하여 영어와 과학 점수의 전체 평균을 구해보았습니다.

 

read_excel()은 기본적으로 엑셀 파일의 첫 번째 행변수명으로 인식해 불러옵니다.

따라서 첫 번째 행부터 바로 데이터가 시작되는 경우에는 첫 번째 행 데이터가 유실되는 문제가 발생합니다.

 

이번에는 첫 행부터 데이터가 시작되는 엑셀 파일을 불러온 경우입니다.

원본 파일은 excel_exam_sheet.xlsx 파일로써 첫 행(변수명)을 제외하면 8행으로 구성된 데이터셋 입니다.

 

출력 결과를 보면, 엑셀 파일 첫 번째 행을 변수명으로 인식해 원본과 달리 7행까지만 존재하는 문제가 발생하였습니다.

이런 경우 데이터 분석 값에 치명적인 오류를 발생시킵니다. 따라서 첫 번째 행 데이터를 살리기 위해 col_names 파라미터를 사용합니다.

 

R은 참(True)과 거짓(False) 중 하나로 구성되는 논리형 벡터(Logical Vectors)라는 변수 타입이 있습니다.

'col_names =' 는 '열 이름(Column Name)을 가져올 것인가?' 라는 질문이고, 뒤의 'F'는 'False(그렇지 않다)'라고 답을 한 것입니다.

이러한 논리형 벡터는 반드시 대문자 TRUE(T) 또는 FALSE(F)로 입력해야 합니다.

 

col_names = F 파라미터를 설정하면 첫 번째 행을 변수명이 아닌 데이터로 인식해 불러올 수 있습니다.

변수명은 '... 숫자' 로 자동 지정됩니다. 

 

 

만약 엑셀 파일에 시트가 여러 개 있다면 어떻게 할까요?

# 엑셀 파일의 네 번째 시트에 있는 데이터 불러오기
df_exam_sheet <-read_excel("E:/R Project/easy_r/excel_exam.xlsx", sheet = 4)

sheet 파라미터를 사용하여 몇 번째 시트의 데이터를 불러올지 지정할 수 있습니다.

 

 

2-2. CSV 파일 불러오기

 

- csv 파일은 엑셀뿐 아니라 SAS, SPSS 등 데이터를 다루는 대부분의 프로그램에서 읽고 쓰기가 가능한 범용 데이터 파일입니다. 

- CSV(Comma-separated Values), 데이터가 쉼표로 구분되어 있는 형태입니다.

- 엑셀 파일에 비해 용량이 작기 때문에 데이터를 주고 받을 때 많이 이용됩니다.

 

별도의 패키지가 필요 없으며, R에 기본적으로 내장되어 있는 read.csv() 함수를 이용하면 쉽게 csv 파일을 불러올 수 있습니다.

만약 첫 번째 행에 변수명이 없는 csv 파일을 불러올 때는 'header = F' 파라미터를 지정하면 됩니다.

 * read_excel() 의 col_names = F 와 기능이 동일합니다!

 

 

혹시라도 문자가 들어 있는 파일을 불러올 때는 stringsAsFactors 파라미터를 F로 설정해야 합니다.

그래야만 변수를 factor 타입이 아닌 문자 타입으로 불러오기 때문에 오류가 발생하지 않습니다.

df_csv_exam <- read.csv("E:/R Project/Data/csv_exam.csv", stringsAsFactors = F)

 

# 데이터 프레임을 CSV 파일로 저장하기

 

R 내장 함수인 write.csv() 를 이용해 데이터 프레임을 csv 파일로 저장하였습니다.

괄호 안에 저장할 데이터 프레임명을 지정하고, file 파라미터에 파일명을 지정하면 됩니다.

저장한 파일은 해당 프로젝트 폴더에 생성됩니다.

 

 

# RDS 파일 활용하기

 

이번에는 RDS 확장자를 가진 파일에 대해 살펴보겠습니다.

RDS 파일은 R 전용 데이터 파일입니다. R 전용 파일이기 때문에 다른 파일들에 비해 R에서 읽고 쓰는 속도가 빠르고 용량 또한 작다는 장점이 있습니다.

 

saveRDS()를 이용해 데이터 프레임을 .rds 파일로 저장할 수 있습니다.

 

 

- rm() 함수를 이용하면 데이터가 삭제됩니다.

- 환경 창에 저장되었던 데이터가 삭제되자 df_exams를 실행하니 오류가 발생하였습니다.

 

- saveRDS()를 이용하여 저장한 df_exams.rds 파일을 readRDS() 함수를 이용해 불러왔습니다.

 

- df_exams에 rds 파일을 할당하고 다시 실행했더니 데이터가 출력되었습니다.

 

 

 

 

 

 

 

 

 

* .rds 뿐만 아니라 .Rdata ( .rda ) 파일은 R 객체를 R 고유의 형식으로 저장하는 데 사용할 수 있습니다. 

* Rda 파일을 불러올 때는 load("df_exams.rda"), 저장할 때는 save(df_exams, file = "df_exams.rda")를 이용하면 됩니다.

 


[참고자료]

(Book) Do it! 쉽게 배우는 R 데이터 분석 - 이지스퍼블리싱

Do it! 쉽게 배우는 R 데이터 분석
국내도서
저자 : 김영우
출판 : 이지스퍼블리싱 2017.07.20
상세보기
반응형

'AI Big Data > R' 카테고리의 다른 글

변수명 바꾸기  (0) 2020.07.21
데이터 파악하기  (0) 2020.07.20
함수와 패키지 이해하기  (0) 2020.07.19
변수란?  (0) 2020.07.18
R Studio 살펴보기  (0) 2020.07.16