컴퓨터/R 공부

[혼공학습단 10기] 혼자 공부하는 R 데이터분석 Chapter 04

방구석의 개굴이 2023. 7. 12. 04:42

Chapter 04 데이터 다루기

04-1 데이터 수집하기
  • 데이터 수집
  • 데이터 수집 : 분석할 데이터를 준비하는 과정
데이터 원천 설명
직접 입력 벡터나 데이터 프레임을 R에 함수로 입력하는 방법
외부 데이터 가져오기 *.txt, *.csv, *.xlsx
  • 직접 입력
# 데이터 입력 : 벡터 만들기, 데이터 프레임 만들기와 동일
변수명 <- c()

# 데이터 조회
View(데이터 이름)
## 예시
ID <- c(1,2,3,4,5)
SEX <- c("F", "M", "F", "M", "F")
DATA <- data.frame(id=ID, sex=SEX)


View(DATA)
  • 외부 데이터 가져오기 : TXT 파일
read.table(“데이터 이름”, header = FALSE, skip = 0, nrows = -1, sep = “”, ...)
- header : 원시 데이터의 1행이 변수명인지 아닌지 판단
- skip : 특정 행까지 제외하고 데이터를 가져옴
- nrows : 특정 행까지 데이터를 가져옴
- sep : 데이터의 구분 문자를 지정
-- 옵션은 사용하지 않으면 구문에서 생략할 수 있다. (생략 시 기본값으로 선택됨)
 
# TXT 파일 가져오기
ex_data.txt <- read.table("C:/~/ex_data_txt.txt",
     header = TRUE,
     encoding = "EUC-KR",
     fileEncoding = "UTF-8" )
 
 # 가져온 TXT 조회하기
View(ex_data.txt)

# 옵션1. header (열 이름 지정하기) : 기본옵션 header = FALSE
varname <- c("ID", "SEX", "AGE", "AREA")
ex_data.txt2 <- read.table("C:/~/data_ex_col.txt",
     header = FALSE,
     col.names = varname,
     encoding="EUC-KR",
     fileEncoding="UTF-8")

 # 가져온 TXT 조회하기
 View(ex_data.txt2)

# 옵션2. skip (행 건너뛰기)
ex_data.txt3 <- read.table("C:/~/ex_data_txt.txt",
header = TRUE,
skip = 2,
encoding = "EUC-KR",
fileEncoding = "UTF-8" )


 # 가져온 TXT 조회하기
 View(ex_data.txt3)

# 옵션3. nrows (행 자르기)
ex_data.txt4 <- read.table("C:/~/ex_data_txt.txt",
header = TRUE,
nrows = 7,
encoding = "EUC-KR",
fileEncoding = "UTF-8" )


 # 가져온 TXT 조회하기
View(ex_data.txt4)
 
# 옵션4. sep (데이터 구분자 인식시키기)
ex_data.txt5 <- read.table("C:/~/data_ex1.txt",
header = TRUE,
sep=",",
encoding = "EUC-KR",
fileEncoding = "UTF-8" )


 # 가져온 TXT 조회하기
View(ex_data.txt5)
 
  • 외부 데이터 가져오기 : CSV 파일
read.csv(“원시데이터”)
- read.table() 함수와 사용법이 비슷함
-- header = TRUE 가 기본값인 것이 차이점
# CSV 불러오기
ex_data.csv <- read.csv("C:/~/data_ex.csv")
 
# 가져온 CSV 조회하기
View(ex_data.csv)
  • 외부 데이터 가져오기 : EXCEL 파일
read_excel(“원시 데이터”)
- readxl 패키지 설치 필요
# readxl 패키지 설치 및 로드
install.packages('readxl')
library("readxl")


# 엑셀 파일 가져오기
ex_data.xlsx <- read_excel("C:/~/data_ex.xlsx",
sheet = 1) ## sheet 옵션은 선택
View(ex_data.xlsx)

  • 외부 데이터 가져오기 : XML, JSON 파일
* XML : Extensible markup language
-> HTML과 비슷. 데이터를 보여주는 것이 아니라 저장하고 전달하는 목적의 파일 형식
-> HTML과 달리 태그<>가 미리 정의되어 있지 않고 사용자가 직접 정의

* JSON : Javascript object notation
-> XML과 마찬가지로 데이터를 전달하는 목적으로 만들어진 파일 형식
-> 서버-클라이언트 통신 간 데이터를 받아 객체나 변수에 할당해서 사용할 때 따 많이 사용
-> XML 파일보다 구문이 짧고 속도가 빨라 실무에서 흔히 사용
xmlToDataFrame(“원시 데이터”)
- XML 패키지 설치 필요
# XML 패키지 설치 및 로드
install.packages("XML")
library(XML)
 
# XML 파일 가져오기
ex_data.xml <- xmlToDataFrame("C:/~/data_ex.xml")
View(ex_data.xml)
fromJSON(“원시 데이터”)
- JSON 파일은 데이터 안에 다시 데이터가 정의된 중첩 데이터 구조
- 데이터 속성과 값이 쌍으로 이루어진 것이 특징 (ex. 속성(주소) - (“서울”) )
- jsonlite 패키지 설치 필요
- fromJSON() 함수는 JSON 파일을 데이터 프레임으로 가져오지 않는다
>> View() 가 아니라 str() 로 구성 확인
# jsonlite 패키지 설치 및 로드
install.packages("jsonlite")
library(jsonlite)

# JSON파일 가져오기
ex_data.json <- fromJSON("C:/~/data_ex.json")
str(ex_data.json)
04-2 데이터 관측하기
  • 데이터 전체 확인하기
data(“원시 데이터”)
  • 데이터 요약 확인하기
str(“변수명”)
ncol(“변수명”)
ls(“변수명”)
nrow(“변수명”)
dim(“변수명”)
head(변수명, n = 수량)
tail(변수명, n = 수량)
데이터의 형식 유형 확인
데이터 프레임의 열(column) 개수 확인
데이터 세트에 있는 열의 이름 확인
데이터 프레임의 관측치 = (row) 개수 확인
데이터 프레임의 열 및 관측치 개수 확인
데이터의 앞 n개 값 확인 (기본 6)
데이터의 뒤 n개 값 확인 (기본 6)
  • 기술통계량 확인하기
mean(변수명) 평균
median(변수명) 중앙값
min(변수명), max(변수명) 최솟값, 최댓값
range(변수명) 범위 (최솟값과 최댓값을 출력)
quantile(변수명, probs = 0~1) 하위 0~1 (비율) 만큼의 분위수
1사분위수 (0.25)
2사분위수 (0.50)
3사분위수 (0.75)
하위 80% 지점의 값 (0.80)
var(변수명) 분산
sd(변수명) 표준편차
kurtosi(변수명) 쿨토시 첨도 (정규분포 대비 뾰족한 정도)
skew(변수명) 왜도 (좌우대칭 대비 오른쪽 꼬리+ 또는 왼쪽 꼬리-가 긴 정도
첨도, 왜도 함수를 사용하기 위해 설치해야 하는 패키지 : psych
  • 빈도분석 (도수분포)
freq(변수명)
빈도분석 함수를 사용하기 위해 설치해야 하는 패키지 : descr
plot 출력이 기본 옵션
04-3 데이터 탐색하기
  • 그래프 그리기
막대 그래프 freq(변수명, plot = T, main = ‘그래프 제목’)
descr 패키지 설치 필요
000 <- table(변수명)
barplot(000, ylim = c(y축 범위),
main = “그래프 제목”,
xlab = “x축 제목”,
ylab = “y축 제목”,
names = c(“컬럼 제목”, ...),
col = c(“색상”, ...) ...)
별도 패키지 설치 필요없음
빈도분석이 선행되어야 함 : table() 함수
상자 그림 baxplot(000, ylim = c(y축 범위),
main = “그래프 제목”,
xlab = “x축 제목”,
ylab = “y축 제목”,
names = c(“컬럼 제목”, ...),
col = c(“색상”, ...) ...)
막대그래프 vs 히스토그램
막대그래프는 이산형 데이터(성별, 지역 등)의 빈도수를 표시하여 비를 보는 것
히스토그램은 연속형 데이터(, 성적 등)를 일정한 계급구간으로 나누어 분포를 보는 것
히스토그램 hist(000, ylim = c(y축 범위),
main = “그래프 제목”,
xlab = “x축 제목”,
ylab = “y축 제목”,
names = c(“컬럼 제목”, ...),
col = c(“색상”, ...) ...)
파이차트
(원 그래프)
000 <- table(변수명)
pie(000, ylim = c(y축 범위),
main = “그래프 제목”,
xlab = “x축 제목”,
ylab = “y축 제목”,
names = c(“컬럼 제목”, ...),
col = c(“색상”, ...) ...)
빈도분석이 선행되어야 함 : table() 함수
줄기 잎 그림 stem(변수명, scale = ~)
scale 파라미터는 줄기의 수 (예시 보기)
기본 옵션은 scale = 1
# 예시 1
x <- c(10, 20, 30, 40, 50)
> stem(x)
1 | 0
2 | 0
3 | 0
4 | 0
5 | 0
> stem(x, scale=2)
1 | 0
1 |
2 | 0
2 |
3 | 0
3 |
4 | 0
4 |
5 | 0
>stem(x, scale= 10)
10 | 0
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 | 0
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 | 0
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 | 0
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 | 0

# 예시 2
y <- c(1,2,3,4,7,8,9,11,35)
> stem(y)
0 | 1234789
1 | 1
2 |
3 | 5
> stem(y,scale=2)
0 | 1234
0 | 789
1 | 1
1 |
2 |
2 |
3 |
3 | 5
> stem(y,scale=0.5)
0 | 12347891
2 | 5

# 예시 3
z <- c(1,2,3,4,7,8,8,5,9,6,9)
> stem(z)
0 | 0
2 | 00
4 | 00
6 | 00
8 | 0000
> stem(z, scale=2)
> stem(z, scale=3) #결과가 같음
1 | 0
2 | 0
3 | 0
4 | 0
5 | 0
6 | 0
7 | 0
8 | 00
9 | 00
>stem(z, scale=0.5)
>stem(z, scale=0.8) #결과가 같음
0 | 1234
0 | 5678899
산점도 plot(x, y)

-- plot(
변수명) 으로 입력시 전체 산점도가 출력
> plot(iris$Sepal.Length, iris$Sepal.Width)

> plot(iris)
pairs(변수명)

-- 내장함수
> pairs(iris)
pairs.panel(변수명)

-- psych 패키지
-- 상관계수까지 출력
> pairs.panels(iris)
혼공 미션
 
  • 기본 미션
p. 169의 iris 내장 데이터 세트의 데이터 구조 출력하고 인증하기
  • 선택 미션 : p. 191 상자 그림 그래프의 각 요약값 정리하기
상자 그림 그리기 연습 (comma 하나만 빼먹어도 안 그려짐....)
p192 상자그림

 

이상치(outlier) 데이터가 많이 분포해있는 범위에서 심하게 벗어난 극단의 데이터
최댓값 (maximum) 모든 데이터 중 가장 큰 값
제3사분위수 (third quartile) 데이터의 75%가 어떤 값보다 작거나 같을 때 이 값
최댓값과 중앙값을 이등분하는 값
중앙값(제2사분위수) (Median) 데이터를 크기순으로 정렬했을 때 중앙에 위치하는 값
제1사분위수 (first quartile) 데이터의 25%가 어떤 값보다 작거나 같을 때 이 값
최솟값과 중앙값을 이등분하는 값
최솟값 (minimum) 모든 데이터 중 가장 작은 값

 

정리본 PDF

Chapter 04 데이터 다루기.pdf
0.40MB