데이터 불러오기 및 저장하기

Data Learning

데이터 불러오기 및 저장하기

HR분석 0 111 2020.02.29 10:16

데이터 불러오기 및 저장하기

데이터 저장위치별 다양한 데이터 불러오기

데이터 불러오기

데이터 안에 숨겨진 정보를 파악하여 의미있는 스토리를 제공하기 위해서는 올바른 데이터의 수집이 필수적이다.특정한 분석을 위해 스스로 데이터를 수집할 수도 있지만 이에는 한계가 있고,

빅데이터를 수집하는 기술로는 SNS, 뉴스 등의 웹정보를 인터넷에서 수집하는 크롤링(crawling), 각종 센서를 이용해 수집하는 센싱(sensing), 분산 시스템에서 데이터베이스 관리 시스템인 카산드라(Cassandra),

  • 데이터를 불러오기 위해서는 데이터의 형태에 따라 사용하는 함수가 다르다.
    • csv파일은 read.csv()라는 함수를 사용한다.
    • 엑셀파일은 read_xlsx()함수를 사용한다.
    • 텍스트 파일은 readLines()라는 함수를 사용한다.
    • pdf파일은 pdf_text()함수를 사용한다.


csv파일 불러오기


형식 | read.csv(“파일위치/파일명.csv”,옵션1,옵션2)

read.csv(“파일위치/파일명.확장자”,옵션1,옵션2)순으로 정의를 한다.
header=TRUE, 첫번째 행의 이름을 컬럼명으로 한다, 기본값은 TRUE
결측치가 포함된 경우 대응값을 지정, 기본값은 NA
na.string=‘NA’
문자열을 팩터로 지정할지 여부를 설정, 기본값은 TRUE
stringAsFactor=TRUE )


실습 csv파일을 불러온다.

hr <- read.csv("C:/data/hrdata.csv",header=T, stringsAsFactors = T)
names(hr)
##  [1] "id"                    "satisfaction_level"    "last_evaluation"      
##  [4] "number_project"        "average_montly_hours"  "time_spend_company"   
##  [7] "Work_accident"         "left"                  "promotion_last_5years"
## [10] "sales"                 "salary"                "sex"
  • 불러온 파일을 hr이라는 데이터프레임(객체)로 저장하여 사용한다.
    • read.csv(“파일위치/파일명.확장자”,옵션1, 옵션2)순으로 정의를 한다.
    • 옵션1 header의 디폴트 옵션은 TRUE이다.
    • 사내외 대다수의 파일들은 컬럼명(열이름)이 있으므로, 구태여 지정할 필요없다.
    • stringAsFactor의 옵션2의 디폴트는 TRUE이다.
    • csv파일을 불러올 경우 문자형은 모두 범주형(Factor형)으로 변경되어 불러오므로 구태여 지정할 필요없다.


실습 옵션없이 csv파일을 불러온다.

hr1 <- read.csv("C:/data/hrdata.csv")
names(hr1)
##  [1] "id"                    "satisfaction_level"    "last_evaluation"      
##  [4] "number_project"        "average_montly_hours"  "time_spend_company"   
##  [7] "Work_accident"         "left"                  "promotion_last_5years"
## [10] "sales"                 "salary"                "sex"
  • 대부분의 내부 자료에서는 첫번째 행이 컬럼명으로 되어 있기 때문에 옵션1 header없이 사용 가능하다..
  • 결측치가 있을 경우 ’NA’로 기본적으로 표기된다.
  • 문자열을 factor로 기본적으로 설정된다.
  • 따라서 파일명으로 불러와서 사용해도 무방하다.


엑셀파일불러오기


형식 | read_excel(“파일위치/파일명.확장자”,옵션1,옵션2)

read_excel(“파일위치/파일명.확장자”, #
옵션1, #
옵션2, #
)


실습1 ’readxl’패키지를 활용하여 엑셀파일 불러오기.

library(readxl)
hre <- read_excel("C:/data/hrdata.xlsx",sheet = 1,col_names = T)
names(hre)
##  [1] "id"                    "satisfaction_level"    "last_evaluation"      
##  [4] "number_project"        "average_montly_hours"  "time_spend_company"   
##  [7] "Work_accident"         "left"                  "promotion_last_5years"
## [10] "sales"                 "salary"                "sex"
  • 불러온 파일을 hre이라는 데이터프레임(객체)로 저장하여 사용한다.
    • read.excel(“파일위치/파일명.확장자”,옵션1, 옵션2)순으로 정의를 한다.
    • 옵션1 sheet=1의 시트no를 넣게되며 디폴트 옵션은 1이다.(대다수의 시트1번에 데이터가 담겨있기때문에..)
    • 옵션2 컬럼명이 불러올지를 파악한다.디폴트는 TRUE이므로 구태여 지정할 필요없다.
    • excel파일을 불러올 경우 문자형은 범주형이 아니라 문자형으로 불러오게 됨.


실습2 ’xlsx’패키지를 활용하여 엑셀파일 불러오기.

#install.packages("xlsx")
library(xlsx)
hre1 <- read_excel("C:/data/hrdata.xlsx",sheet = 1,col_names = T)
names(hre1)
##  [1] "id"                    "satisfaction_level"    "last_evaluation"      
##  [4] "number_project"        "average_montly_hours"  "time_spend_company"   
##  [7] "Work_accident"         "left"                  "promotion_last_5years"
## [10] "sales"                 "salary"                "sex"



텍스트문서 불러오기

형식 | readLines(“파일위치/파일명.txt”,옵션1)

readLines(“파일위치/파일명.확장자”, #
옵션1, #옵션1= 데이터 인코딩 방식 여부 결정
# 인코딩 방식은 대체로 ‘EUC-KR’방식,’UTF-8’ ’CP949’방식이 대다수
)


실습1 인코딩여부 확인없이 txt파일불러오기.

job <- readLines("C:/study/dataset/일자리.txt")
job
##  [1] "癤우젣議곗뾽 \xec씪\xec옄由ъ\x99\u0080 40\xeb\x8c\u0080 \xec씪\xec옄由\xac 6遺꾧린 留뚯뿉 '利앷\xb0\u0080' \xec쟾\xed솚"                                                                                                                                                                                                                                                  
##  [2] ""                                                                                                                                                                                                                                                                                                                                                                          
##  [3] "留뚯꽦\xec쟻\xec씤 媛먯냼\xec꽭媛\u0080 \xec씠\xec뼱吏\u0080\xeb뜕 \xec젣議곗뾽怨\xbc 40\xeb\x8c\u0080 \xec씪\xec옄由ш\xb0\u0080 利앷\xb0\u0080 \xec쟾\xed솚\xec뿉 \xec꽦怨듯뻽\xeb떎."                                                                                                                                                                                   
##  [4] ""                                                                                                                                                                                                                                                                                                                                                                          
##  [5] "\xed넻怨꾩껌\xec씠 27\xec씪 諛쒗몴\xed븳 '2019\xeb뀈 3遺꾧린(8\xec썡 湲곗\xa4\u0080) \xec엫湲덇렐濡\x9c \xec씪\xec옄由щ룞\xed뼢'\xec뿉 \xeb뵲瑜대㈃ 吏\u0080\xeb궃\xed빐 3遺꾧린 \xec쟾泥\xb4 \xec엫湲덇렐濡\x9c \xec씪\xec옄由щ뒗 1873留\x8c 9000媛쒖\x98\u0080\xeb떎."                                                                                                 
##  [6] ""                                                                                                                                                                                                                                                                                                                                                                          
##  [7] "\xec쟾\xeb뀈\xeb룄\xec씤 2018\xeb뀈 3遺꾧린蹂대떎 63留\x8c 5000媛\x9c(3.5%) 利앷\xb0\u0080\xed븳 寃껋쑝濡\x9c, 2018\xeb뀈 1遺꾧린遺\u0080\xed꽣 愿\u0080\xeb젴 \xed넻怨꾨\xa5\xbc \xec옉\xec꽦\xed븳 \xec씠\xeb옒 利앷\xb0\u0080 \xed룺\xec씠 媛\u0080\xec옣 而몃떎."                                                                                                      
##  [8] ""                                                                                                                                                                                                                                                                                                                                                                          
##  [9] "\xed듅\xed엳 \xec젣議곗뾽 \xec씪\xec옄由ш\xb0\u0080 2018\xeb뀈 3遺꾧린 419留\x8c 6000媛쒖뿉\xec꽌 吏\u0080\xeb궃\xed빐 3遺꾧린 419留\x8c 9000媛쒕줈 3000媛쒓\xb0\u0080 \xeb뒛\xec뿀\xeb떎."                                                                                                                                                                               
## [10] ""                                                                                                                                                                                                                                                                                                                                                                          
## [11] "\xec쟾\xeb뀈 \xeb룞湲\xb0 \xeb\x8c\u0080鍮\x84 利앷\xb0\u0080\xec쑉\xec씠 鍮꾨줉 0.1%濡\x9c 誘몃\xaf명븯吏\u0080留\x8c, 2018\xeb뀈 1遺꾧린 0.1% 利앷\xb0\u0080瑜\xbc 湲곕줉\xed븳 \xec씠\xed썑 \xeb궡\xeb궡 媛먯냼瑜\xbc 湲곕줉\xed븯\xeb떎媛\u0080 6遺꾧린 留뚯뿉 \xeb떎\xec떆 利앷\xb0\u0080濡\x9c \xeb룎\xec븘\xec꽑 寃껋씠\xeb떎."                                     
## [12] ""                                                                                                                                                                                                                                                                                                                                                                          
## [13] "\xec쟾泥\xb4 \xec엫湲덇렐濡\x9c \xec씪\xec옄由\xac 媛\u0080\xec슫\xeb뜲 \xec젣議곗뾽 鍮꾩쨷\xec씠 22.4%濡\x9c \xec븬\xeb룄\xec쟻(\xec젣議곗뾽 \xeb떎\xec쓬\xec\x9d\u0080 \xeb룄\xec냼留ㅺ\xb0\u0080 10.9%)\xec씤 \xec젏\xec쓣 怨좊젮\xed븯硫\xb4 \xec씠踰\x88 \xec젣議곗뾽 \xec씪\xec옄由\xac 利앷\xb0\u0080媛\u0080 \xeb뜑\xec슧 \xeb룍蹂댁씤\xeb떎."                     
## [14] ""                                                                                                                                                                                                                                                                                                                                                                          
## [15] "吏\u0080\xeb궃\xed빐 3遺꾧린 \xec씪\xec옄由ш\xb0\u0080 媛\u0080\xec옣 留롮씠 利앷\xb0\u0080\xed븳 \xec궛\xec뾽\xec\x9d\u0080 蹂닿굔쨌\xec궗\xed쉶蹂듭\xa7\u0080(16留\x8c 6000媛\x9c)\xec\x98\u0080\xeb떎."                                                                                                                                                                
## [16] ""                                                                                                                                                                                                                                                                                                                                                                          
## [17] "\xec씠\xec뼱 \xeb룄\xec냼留\xa4(7留\x8c 9000媛\x9c), 怨듦났\xed뻾\xec젙(6留\x8c 7000媛\x9c), \xec쟾臾맞룰낵\xed븰쨌湲곗닠(5留\x8c 7000媛\x9c) \xeb벑\xec쓽 \xec닚\xec쑝濡\x9c \xec씪\xec옄由\xac 利앷\xb0\u0080媛\u0080 留롮븯\xeb떎."                                                                                                                                     
## [18] ""                                                                                                                                                                                                                                                                                                                                                                          
## [19] "嫄댁꽕\xec뾽\xeb룄 吏\u0080\xeb궃\xed빐 3遺꾧린 \xec씪\xec옄由ш\xb0\u0080 \xec쟾\xeb뀈 \xeb룞湲\xb0 \xeb\x8c\u0080鍮\x84 3留\x8c 2000媛\x9c 利앷\xb0\u0080\xed븯硫\xb0 愿\u0080\xeb젴 \xed넻怨\x84 \xec옉\xec꽦 \xec씠\xed썑 泥섏쓬\xec쑝濡\x9c 利앷\xb0\u0080(1.8%)瑜\xbc 湲곕줉\xed뻽\xeb떎."                                                                           
## [20] ""                                                                                                                                                                                                                                                                                                                                                                          
## [21] "\xed넻怨꾩껌\xec\x9d\u0080 洹몃윭\xeb굹 \"\xec씠\xeb뒗 嫄댁꽕 寃쎄린媛\u0080 醫뗭븘\xec졇\xec꽌媛\u0080 \xec븘\xeb땲\xeb씪 鍮꾧탳 \xeb\x8c\u0080\xec긽\xec씤 2018\xeb뀈 3遺꾧린 嫄댁꽕\xec뾽\xec씠 \xeb떦\xec떆 \xed룺\xec뿼 \xed깛\xec뿉 \xec썙\xeb굺 醫뗭\xa7\u0080 \xec븡\xec븯\xeb뜕 '湲곗\xa0\u0080\xed슚怨\xbc' \xec쁺\xed뼢\"\xec씠\xeb씪怨\xa0 \xec꽕紐낇뻽\xeb떎."
## [22] ""                                                                                                                                                                                                                                                                                                                                                                          
## [23] "\xec젣議곗뾽 \xeb벑 \xec씪\xec옄由\xac 利앷\xb0\u0080\xec뿉 \xed옒\xec엯\xec뼱 \xec슦由\xac \xec궗\xed쉶 怨좎슜 臾몄젣\xec쓽 \xed빑\xec떖 以\x91 \xed븯\xeb굹\xec씤 40\xeb\x8c\u0080 \xec씪\xec옄由\xac \xec뿭\xec떆 媛먯냼\xec뿉\xec꽌 利앷\xb0\u0080濡\x9c 諛섏쟾\xed뻽\xeb떎."                                                                                          
## [24] ""                                                                                                                                                                                                                                                                                                                                                                          
## [25] "吏\u0080\xeb궃\xed빐 3遺꾧린 40\xeb\x8c\u0080 \xec씪\xec옄由щ뒗 \xec쟾\xeb뀈 \xeb룞湲\xb0 \xeb\x8c\u0080鍮\x84 3留\x8c 4000媛\x9c 利앷\xb0\u0080\xed뻽\xeb떎."                                                                                                                                                                                                            
## [26] ""                                                                                                                                                                                                                                                                                                                                                                          
## [27] "40\xeb\x8c\u0080 \xec씪\xec옄由ш\xb0\u0080 \xec쟾\xeb뀈 \xeb룞湲\xb0 \xeb\x8c\u0080鍮\x84 利앷\xb0\u0080\xed븳 嫄\xb4 2018\xeb뀈 1遺꾧린 2留\x8c 2000媛\x9c 利앷\xb0\u0080 \xec씠\xed썑 \xec뿭\xec떆 6遺꾧린 留뚯뿉 泥섏쓬\xec씠\xeb떎."                                                                                                                                  
## [28] ""                                                                                                                                                                                                                                                                                                                                                                          
## [29] "\xed븳\xed렪, 吏\u0080\xeb궃\xed빐 3遺꾧린\xec뿉\xeb뒗 40\xeb\x8c\u0080瑜\xbc \xed룷\xed븿\xed빐 \xec쟾 \xec뿰\xeb졊\xeb\x8c\u0080\xec뿉\xec꽌 \xec쟾\xeb뀈 \xeb룞湲\xb0 \xeb\x8c\u0080鍮\x84 \xec씪\xec옄由ш\xb0\u0080 利앷\xb0\u0080\xed뻽\xeb떎."                                                                                                                      
## [30] ""                                                                                                                                                                                                                                                                                                                                                                          
## [31] "\xec젙遺\u0080\xec쓽 '\xeb끂\xec씤 \xec씪\xec옄由\xac \xec궗\xec뾽' \xed슚怨쇰\xa5\xbc \xeb늻由ш퀬 \xec엳\xeb뒗 60\xeb\x8c\u0080 \xec씠\xec긽 \xec씪\xec옄由ш\xb0\u0080 28留\x8c 媛\x9c(\xec쟾泥\xb4 \xec씪\xec옄由\xac 利앷\xb0\u0080\xec쓽 44.1%)濡\x9c 媛\u0080\xec옣 留롮씠 \xeb뒛\xec뿀\xeb떎."                                                                     
## [32] ""                                                                                                                                                                                                                                                                                                                                                                          
## [33] "50\xeb\x8c\u0080 \xec씪\xec옄由\xac 利앷\xb0\u0080媛\u0080 23留\x8c 1000媛\x9c(\xec쟾泥\xb4 \xec씪\xec옄由\xac 利앷\xb0\u0080\xec쓽 36.4%)濡\x9c 洹몃떎\xec쓬\xec씠\xec뿀怨\xa0, 20\xeb\x8c\u0080 \xec씠\xed븯 \xec씪\xec옄由\xac 利앷\xb0\u0080\xeb뒗 8留\x8c 2000媛\x9c(\xec쟾泥\xb4 \xec씪\xec옄由\xac 利앷\xb0\u0080\xec쓽 12.9%)\xec\x98\u0080\xeb떎."                
## [34] ""                                                                                                                                                                                                                                                                                                                                                                          
## [35] "諛섎㈃, 30\xeb\x8c\u0080 \xec씪\xec옄由\xac 利앷\xb0\u0080\xeb뒗 8000媛쒖뿉 洹몄낀\xeb떎."                                                                                                                                                                                                                                                                                 
## [36] ""                                                                                                                                                                                                                                                                                                                                                                          
## [37] "吏\u0080\xeb궃\xed빐 3遺꾧린\xec뿉 利앷\xb0\u0080\xed븳 \xec쟾泥\xb4 \xec엫湲덇렐濡\x9c \xec씪\xec옄由\xac 63留\x8c 5000媛쒖뿉\xec꽌 30\xeb\x8c\u0080\xec\x99\u0080 40\xeb\x8c\u0080媛\u0080 李⑥\xa7\u0080\xed븯\xeb뒗 鍮꾩쨷\xec\x9d\u0080 6.6%\xec뿉 遺덇낵\xed뻽\xeb떎."                                                                                               
## [38] ""                                                                                                                                                                                                                                                                                                                                                                          
## [39] "30\xeb\x8c\u0080\xec\x99\u0080 40\xeb\x8c\u0080 \xec씪\xec옄由ш\xb0\u0080 \xec슦由\xac \xec궗\xed쉶 怨좎슜 臾몄젣 \xed빐寃곗쓽 \xec뿴\xec뇿\xec엫\xec씠 \xeb떎\xec떆 \xed븳踰\x88 \xed솗\xec씤\xeb맂 \xec뀍\xec씠\xeb떎."
  • 한글이 깨져서 출현한다.
  • 인코딩이 제대로 설정되지 않은 경우


실습2 인코딩 설정후 txt파일 불러오기.

job <- readLines("C:/study/dataset/일자리.txt",encoding='UTF-8')
job
##  [1] "<U+FEFF>제조업 일자리와 40대 일자리 6분기 만에 '증가' 전환"                                                                                              
##  [2] ""                                                                                                                                                        
##  [3] "만성적인 감소세가 이어지던 제조업과 40대 일자리가 증가 전환에 성공했다."                                                                                 
##  [4] ""                                                                                                                                                        
##  [5] "통계청이 27일 발표한 '2019년 3분기(8월 기준) 임금근로 일자리동향'에 따르면 지난해 3분기 전체 임금근로 일자리는 1873만 9000개였다."                       
##  [6] ""                                                                                                                                                        
##  [7] "전년도인 2018년 3분기보다 63만 5000개(3.5%) 증가한 것으로, 2018년 1분기부터 관련 통계를 작성한 이래 증가 폭이 가장 컸다."                                
##  [8] ""                                                                                                                                                        
##  [9] "특히 제조업 일자리가 2018년 3분기 419만 6000개에서 지난해 3분기 419만 9000개로 3000개가 늘었다."                                                         
## [10] ""                                                                                                                                                        
## [11] "전년 동기 대비 증가율이 비록 0.1%로 미미하지만, 2018년 1분기 0.1% 증가를 기록한 이후 내내 감소를 기록하다가 6분기 만에 다시 증가로 돌아선 것이다."       
## [12] ""                                                                                                                                                        
## [13] "전체 임금근로 일자리 가운데 제조업 비중이 22.4%로 압도적(제조업 다음은 도소매가 10.9%)인 점을 고려하면 이번 제조업 일자리 증가가 더욱 돋보인다."         
## [14] ""                                                                                                                                                        
## [15] "지난해 3분기 일자리가 가장 많이 증가한 산업은 보건·사회복지(16만 6000개)였다."                                                                          
## [16] ""                                                                                                                                                        
## [17] "이어 도소매(7만 9000개), 공공행정(6만 7000개), 전문·과학·기술(5만 7000개) 등의 순으로 일자리 증가가 많았다."                                           
## [18] ""                                                                                                                                                        
## [19] "건설업도 지난해 3분기 일자리가 전년 동기 대비 3만 2000개 증가하며 관련 통계 작성 이후 처음으로 증가(1.8%)를 기록했다."                                   
## [20] ""                                                                                                                                                        
## [21] "통계청은 그러나 \"이는 건설 경기가 좋아져서가 아니라 비교 대상인 2018년 3분기 건설업이 당시 폭염 탓에 워낙 좋지 않았던 '기저효과' 영향\"이라고 설명했다."
## [22] ""                                                                                                                                                        
## [23] "제조업 등 일자리 증가에 힘입어 우리 사회 고용 문제의 핵심 중 하나인 40대 일자리 역시 감소에서 증가로 반전했다."                                          
## [24] ""                                                                                                                                                        
## [25] "지난해 3분기 40대 일자리는 전년 동기 대비 3만 4000개 증가했다."                                                                                          
## [26] ""                                                                                                                                                        
## [27] "40대 일자리가 전년 동기 대비 증가한 건 2018년 1분기 2만 2000개 증가 이후 역시 6분기 만에 처음이다."                                                      
## [28] ""                                                                                                                                                        
## [29] "한편, 지난해 3분기에는 40대를 포함해 전 연령대에서 전년 동기 대비 일자리가 증가했다."                                                                    
## [30] ""                                                                                                                                                        
## [31] "정부의 '노인 일자리 사업' 효과를 누리고 있는 60대 이상 일자리가 28만 개(전체 일자리 증가의 44.1%)로 가장 많이 늘었다."                                   
## [32] ""                                                                                                                                                        
## [33] "50대 일자리 증가가 23만 1000개(전체 일자리 증가의 36.4%)로 그다음이었고, 20대 이하 일자리 증가는 8만 2000개(전체 일자리 증가의 12.9%)였다."              
## [34] ""                                                                                                                                                        
## [35] "반면, 30대 일자리 증가는 8000개에 그쳤다."                                                                                                               
## [36] ""                                                                                                                                                        
## [37] "지난해 3분기에 증가한 전체 임금근로 일자리 63만 5000개에서 30대와 40대가 차지하는 비중은 6.6%에 불과했다."                                               
## [38] ""                                                                                                                                                        
## [39] "30대와 40대 일자리가 우리 사회 고용 문제 해결의 열쇠임이 다시 한번 확인된 셈이다."
  • 인코딩을 ’UTF-8’로 설정한 결과



pdf파일 불러오기


실습 pdf파일을 문자열 데이터로 불러오기.

#install.packages('pdftools')
library(pdftools)
moon <- pdf_text("C:/study/dataset/신년사.pdf")
moon

, , , , ,

Comments

Data Learning

상담 문의


010.9417.2025 hrd04@naver.com