데이터 청년 캠퍼스/사전교육

[쉽게 따라하는 데이터 분석] 4강 - 6강

뚱뚜루뚱 2022. 7. 12. 01:33

4강. 데이터 구조 및 기초함수

 

데이터 구조
  • 행 Row: 데이터 셋의 가로 영역(관측치)
  • 열 Column: 데이터 셋의 세로 영역(변수)
  • 데이터 값 Value: 관측 값
  • 변수 Variable: 변할 수 있는 값
  • 할당연산자: 변수를 할당할 때 <- 사용. Alt + ( - )를 누르면 자동 생성 

 

변수명 생성 규칙
  • 첫 글자는 반드시 영문자 또는 마침표만 사용
  • 두 번째 글자부터는 영문자, 숫자, 밑줄 사용
  • 대문자와 소문자 구분
  • 빈칸 사용 불가

 

Script
  • : (콜론): 시작 숫자와 마지막 숫자 사이의 1씩 증가하는 연속 값을 변수로 구성
  • c( ): 데이터나 객체를 하나로 결합
x <- 10
print(x)

y <- c(1,2,3,4,5)
print(y)

exam <- c(1:19)
print(exam)

 

 

변수의 자료형
  • 숫자형:  정수형 Integer, 실수형 Float
  • 문자형 String
  • 논리형 Boolean
  • 특수값: 결측값 NA, 정의되지 않은 값 Null, 수학적으로 정의가 불가능한 값 NaN, 무한대 Inf
num <- c(1,2,-5, 11.7) #숫자형
chr <- c('MJ', 'Jane') #문자형
login <- c(TRUE, FALSE) #논리형
num_nan <- c(NaN, 3) #특수값

# str(): 데이터의 구조를 알려주는 함수
str(num)
str(chr)
str(logic)
str(num_nan)

 

변수에 저장된 값은 언제든지 변경 가능하다

# 변수값 변경
a <- 2
b <- 5
print(a+b)
 
a <- 'MJ'
print(a+b)

# 산술연산
a <- 2
a-b
a*b
a/b
a%/%b #나눗셈의 몫
a%%b #나눗셈의 나머지
a^b

 

 

기초 함수

어떤 데이터 값을 미리 정해둔 공식에 따라 처리 결과를 도출한다

  • sum( )
  • mean( )
  • sd( )
  • var( )
  • median( )
  • max( )
  • min( )
  • length( )
  • range( )
test <- c(1:5)
sum(test)
mean(test)
sd(test)
var(test)
median(test)
max(test)
min(test)
length(test)
range(test)

sum(test)/length(test) # mean( )의 값과 동일

 

 

논리연산자

논리연산을 만족하면 True 출력, 그렇지 않으면 False 출력

인덱싱: [ ]로 표현

  • <
  • <=
  • >
  • >=
  • ==
  • !=
  • | : 어느 한쪽이라도 TRUE면 TRUE
  • &
1 > 3
5 < 10
d <- c(1,2,3,4,5,6,7,8,9)
d >= 5

d[d>=5]
sum(d>=5) 
sum(d[d>=5])

logi_result <- d > 5 & d < 8
d[logi_result]

 

 

매트릭스 Matrix

모든 셀의 값이 동일한 자료형으로 이루어짐

matrix(입력값, nrow = 행의 수, ncol = 열의 수)

rownames( )

colnames( )

 

데이터 프레임 Data Frame

모든 셀의 값이 동일한 자료형이 아니어도 됨

data.frame(변수명1, 변수명2, 변수명3, ...)

# Matrix
score <- matrix(c(100,70,72,70,70,65,60,90,95,90,72,100), nrow=4, ncol=3)
print(score)
rownames(score) <- c('MJ', 'Jane', 'Tom', 'Jisoo')
colnames(score) <- c('Korea', 'Math', 'English')
print(score)

score[1,3]
score[2,2]
score[2,]
score[,3]

# DataFrame
Korean <- c(100,70,95)
Math <- c(70,65,90)
Grade <- c('우','미','수')
score_df <- data.frame(Korea, Math, Grade)
print(score_df)

score_df$Korean
score_df[,1]
score_df$Math
score_df[,3]
score_df$Korean[2]
score_df[2,1]

 

 

패키지 설치

유능한 기능을 가진 함수들을 묶은 함수 꾸러미

패키지 설치: install.packages(" ")

패키지 로드: library 

 

 


 

5강. 데이터 수집과 저장

데이터 수집 장소

 

R로 데이터 불러오기
  • getwd( )
  • setwd( )
  • read.csv('파일명', header = TRUE ) # 작업공간에 파일이 저장되어 있다면 폴더 주소 생략가능
  • read.table('파일명')
  • read_excel('파일명') # readxl 패키지 필요

 

Data 저장하기
  • write.csv(저장할 데이터프레임 이름, file = '저장할 파일명.csv')
  • write.table(저장할 데이터프레임 이름, file = '저장할 파일명.txt', sep = ',', na = 'NA')
  • write_xlsx(저장할 데이터프레임 이름, path = '저장할 파일명.xlsx') # writexl 패키지 설치 필요

 

 


 

6강. 데이터 정제 기법

데이터 파악 함수
  • view( ) # 뷰어창에서 확인
  • head( ) / tail( )
  • str( ) # 데이터 구조, 변수 개수, 변수명, 관측치개수 등 미리보기
  • dim( ) # 데이터 차원
  • names( )
  • colnames( ) # 열 이름
  • ls( ) # 저장되어 있는 모든 객체 출력
  • ls(객체명) # 객체 데이터 프레임 내 변수 명 출력
  • rm(list=ls()) # 모든 객체 제거

 

데이터 전처리를 위한 dplyr 패키지
install.packages('dplyr')
library(dplyr)
  • filter( ) # 지정한 조건식에 맞는 데이터 추출
  • select( ) # 선택한 변수(열) 추출
  • mutate( ) # 새로운 변수(열) 추가
  • arrange( ) # 데이터 정렬(오름차순, 내림차순)
  • distinct( ) # 중복된 값 제거
  • group_by( ) # 데이터를 그룹으로 나누기
  • summarise( ) # 수치형 값에 대한 요약통계량 계산
install.packages('hflights')
library(hflights)
hf <- hflights

filter(hf, Month==1, DayofMonth==1) # 월과 일 모두 1인 값(and) 추출
filter(hf, Month==1|Month==2) # 월이 1이거나 2인 값(or) 추출

select(hf, Year, Month, DayofWeek)
select(hf, Year:DayofWeek)

mutate(hf, gain=ArrDelay-DepDelay) #ArrDelay와 DepDelay의 차를 gain으로 저장

arrange(hf, Year, Month, DayofMonth) # dafault: ascending
arrange(hf, desc(Month))

distinct(hf, Year)
distinct(hf, Year, Month) # Year와 Month 모두 유일한 값

# 도착지연평균, 도착지연 최대 계산
summarise(hf, 지연평균=mean(ArrDelay), 지연최대=max(ArrDelay)) # default:na.rm=FALSE
summarise(hf, 지연평균=mean(ArrDelay, na.rm=TRUE), 지연최대=max(ArrDelay, na.rm=TRUE)) # na.rm: 결측값 제거
 # TailNum을 기준으로 그룹화하여 그룹별 갯수, 그룹별 지연평균 계산
summarise(group_by(hf, TailNum), 갯수=n(), 지연평균=mean(ArrDelay, na.rm=TRUE))