공부/데이터 과학

[데이터 과학책 정리] 3. R에서 data 불러오기 (csv 파일, 큰 외부 파일, 엑셀 파일)

ko527ko 2024. 8. 6. 00:37

csv 파일이 가장 상세히 설명될 예정이다. 큰 외부 파일, 엑셀 파일 불러오는 방법은 아래에서 간단히 다루도록 하겠다.

 

<csv 파일 불러오기>

 

1. 데이터 다운

 

구글에 'uci 머신러닝 리포'를 검색한 후 제일 상단에 뜨는 영어 사이트에 들어간다 

데이터 다운 (필자는 실습용이지만 재밌어보이는 걸로 고름.  와인 품질 데이터 다운 받음)

csv 파일 열어서 상태 확인해줌 (생각보다 예쁘게 정리 안되어있음)

음..

이 파일 자체를 고치진 말고 R에서 불러올 때 고쳐서 불러오면 된다.

다음 단계에서 알아보도록 하자. 

 

 

2. 데이터 잘 불러오기

 

 R을 실행한다 

 

> read.csv()와 read.table()로 사용할 수 있는데, read.csv()는 read.table() 함수를 실행하되 header=TRUE, sep=","  옵션이 기본이다. 빼먹으면 안된다.

 

header=TRUE : csv 파일을 첫 행(header, row)이 존재한다는 의미

sep="," : 텍스트를 "," 기준으로 나눠서 읽어들인다는 의미. 

 

예를 들어

음..

이렇게 생겼다면 read.csv()를 사용하고, sep=";" 로 설정해서 불러들이면 됨.

그러면 R이 알아서 ; 기준으로 텍스트 나눠서 불러들임. 

 

(필자는 처음에 암것도 모르고 그냥 불러들이기만 하다가 계속 column=1 이라고 떠서 답답했음)

 

> wine<-read.csv("D:/wine/wine_red.csv",header=TRUE,sep=";")


 엔터 누르면 그 다음에 아무 결과도 안 보일 것이다.

그게 정상인 거임

 

불러들이기 완료.

 

 

 

 

3. 데이터 구조 확인하기 

 

이제 데이터 불러들였으니 데이터 구조를 확인해보자.

R 설치하고 책에서 시킨대로 라이브러리를 잔뜩 설치했었다. 

데이터 구조를 확인할 때는,  dplyr 라이브러리에 있는 glimpse() 함수를 써야 한다.

 

두 가지 방법으로 쓸 수 있다. 

 

> dplyr::glimpse(wine)

#혹은 

> library(dplyr)
> glimpse(wine)

 

이렇게 입력하면 (필자는 전자의 방법으로 입력)

바라던 대로 column이 12줄인 아름다운 데이터 구조가 보인다 .. 

 

<아주 큰 외부 파일 불러오기>

 

- 큰 외부파일이란? 행이나 열의 개수가 큰 파일.(백만 개 이상..) 

read.table, read.csv 함수로 읽어들일 때 시간이 많이 걸린다

- 해결 방법! data.table 패키지의 fread를 사용함. 속도가 10배 이상 빨라짐.

 

library(data.table)  #패키지 불러오기

DT <- fread("very_big.csv")  #데이터 불러오기

DT <- fread("very_big.csv", data.table=FALSE)

 

 

<엑셀 파일 읽어 들이기>

- 엑셀에서 파일 형식 바꾸기

1. 엑셀에서 csv로 저장한다.

2. read.csv()로 읽어 들인다.

 

- 엑셀 파일 바로 읽어들이는 라이브러리 사용

https://github.com/hadley/readxl 의 readxl 라이브러리 사용.

 

library(readxl)

# xls,xlsx 모든 포맷을 다 읽음
read_excel("my-old-spreadsheet.xls")
read_excel("my-new-spreadsheet.xlsx")

#여러 시트가 있을 때 특정 시트 지정하기
read_excel("my-spreadsheet.xls", sheet="data")  #특정 시트명 언급
read_excel("my-spreadsheet.xlsx", sheet=2)  #시트 번호 언급

#결측치가 빈 셀이 아닌 다른 문자로 코드되어 있을 경우
read_excel(" my-spreadsheet.xls", na="NA")   #결측치의 문자를 언급

 

끝... 

뿌듯하다. 자야지

내일은 변수 이름 설정, etc 를 들고 오겠다