본문 바로가기
R을 활용한 데이터 분석

WineQuality 01. 패키지 다운, 데이터 가져오기, 데이터 탐색

by 801lhy 2019. 7. 21.

패키지 다운

install.packages("tidyverse")
install.packages("rJava")
install.packages("DBI")
install.packages("RMySQL")

library(tidyverse)
library(rJava)
library(DBI)
library(RMySQL)

R과 MySQL 을 연동하기위해서 위의 패키지를 다운로드 한다.

RJava > DBI > RMySQL 순서로 로딩해야 한다.

( DBI, RMySQL 이 RJava 에 의존적이기 때문이다. )

 

 

데이터 가져오기

데이터를 가져와 보자

redwine <- read_delim(file="C:\\Users\\User\\Desktop\\rdata\\wine\\winequality-red.csv",delim=";")
# 레드와인

whitewine <- read_delim(file="C:\\Users\\User\\Desktop\\rdata\\wine\\winequality-white.csv",delim=";")
# 화이트와인
# readr의 read_delim()는 read.table()와 비슷한 기능을 한다.

 

1. 데이터 탐색 ( 수치 )

(1) 데이터 구조 확인

str(redwine) # 레드와인
str(whitewine) # 화이트와인
# ---------------- #
# fixed acidity - 고정산도 -> fixed
# volatile acidity - 휘발성 산도 -> volatile
# citric acid - 구연산 -> citric
# residual sugar - 잔류 설탕 -> sugar
# chlorides - 염화물 -> chlorides
# free sulfur dioxide - 자유 이산화황 -> fsd
# total sulfur dioxide - 총 이산화황 -> tsd
# density - 밀도 -> density
# pH - 산도 - >ph
# sulphates - 황산염 -> sulphates
# alcohol - 알코올 -> alcohol
# Output variable (based on sensory data): 
# quality (score between 0 and 10) - 와인의 품질(종속변수) -> quality
# ---------------- #
# 변수명의 변경
# quality(와인품질)은 사람이 매긴 점수이므로 factor로 변환한다.
# quality는 0에서 10까지의 값을 가진다.
# 결측값은 존재하지 않는다.

데이터 구조를 확인한다.

주석 : 변수에 대한 설명

 

(2) 데이터 변수 이름 변경

# -- 이름 변경 -- #
name <- c("fixed", "volatile", "citric", "sugar", "chlorieds", "fsd", "tsd", 
          "density", "ph", "sulphates", "alcohol", "quality") # 열의 이름
names(redwine) <- name
names(whitewine) <- name

(3) quality factor 로 변경

# -- quality factor로 변경 -- #
redwine <- redwine %>% mutate(quality = factor(quality))
whitewine <- whitewine %>% mutate(quality = factor(quality))

mutate( )

- mutate(data.frame,이름=조건)

- 데이터프레임에 조건을 만족하는 새로운 열(변수)를 만들거나, 기존의 열을 조건에 맞게 변경할때 사용

- 새로 생성된 칼럼은 별도의 변수로 지정하거나 기존의 데이터에 덮어 씌우지 않는 이상 저장되지 않음

 

facor( )

- factor(x,levels,ordered)

- 범주형 데이터를 표현하기 위한 데이터 타입

- 범주형 변수가 담을수 있은 값의 목록 = 레벨

- 관측된 값 뿐만 아니라 관측 가능한 값의 레벨도 나열해야 한다.

- x : 펙터로 표현하고자 하는 값 ( 주로 문자열 벡터 )

- levels : 값의 레벨

- ordered : true 이면 순서형, false 면 명목형 ( default 는 명목형 )

- 반환값은 펙터형 데이터 값

 

(4) 레드와인과 화이트 와인의 기초 통계량 확인

# -- 기초통계량 -- #
summary(redwine)
summary(whitewine)

summary( )

해당 벡터의 최솟값(Min), 최댓값(Max), 중앙값(Mediam), 제1분위수(1st Qu), 제3분위수(3rd Qu), 평균(Mean)을 출력한다.

redwine 과 whitewine 의 기초통계량

(5) redwine 데이터, whitewine 데이터 통합

# -- 데이터 통합 -- #
wine <- rbind(redwine %>% mutate(type = "red"), whitewine %>% mutate(type = "white"))
# 두 데이터 프레임을 하나로 만들어 분석한다.

# 두ㅡ 데이터를 하나로 합치며 type으로 구분
wine <- wine %>% mutate(type = factor(type)) # type을 factor로 바꾼다.
name <- c(name,"type")

데이터 분석의 목적

- white와인에서 높은 점수를 주는 속성과 레드와인에서 높은 점수를 주는 속성이 무엇인지 확인하고 점수를 예측하는 모형을 만든다.
- 또 점수와 속성들로 어떤 와인인지 예측한다.

 

rbind( )

- rbind(데이터프레임1,데이터프레임2)

- 행(row)을 결합시켜준다.

- 열의 속성이나 이름,갯수가 다른경우 오류가 발생한다.

 

(6) redwine + whitewine = wine 데이터 확인

# -- 기초통계량(wine) -- #
str(wine)
summary(wine)

wine데이터의 구조와 기초 통계량

(6) 데이터베이스(MySQL) 에 wine 데이터 넣기 & 확인

#db connection
con<-dbConnect(MySQL(),user="root",password="root",dbname="rexample")

#db list 출력
dbWriteTable(con, name = "wine", value = wine, overwrite = TRUE, temporary = FALSE)
# 테이블이 임시로 들어감 false 로 하면 데이터가 들어가야 됨

copy_to(con,wine,"wine",overwrite = TRUE, temporary=FALSE)
# copy_to()는 DBI의 dbWriteTable()과 같은 기능을 수행.
# dplyr 패키지에 속한 copy_to()는 성능 개선을 통해 dbWriteTable()보다 빠른 속도를 제공

print(dbListTables(con))

rm(list = setdiff(ls(), c("con"))) # 필요없는 변수 제거

rexample DB 의  wine 테이블

 

데이터가 들어가 있다.