일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- #크롤링 #웹문서
- 구글 지오코드
- 셀레니움
- 숫자빼고 중복되는 코드동작법
- #비정형#카카오api#api#크롤링
- 웹크롤링
- #비정형 데이터 #네이버 #지도 #크롤링
- 파이썬
- 파이썬 셀레니움
- 카카오APi
- #K-means #Clustering
- 웹매크로 #세잔느
- #위도#경도#비정형데이터#크롤링
- 위도경도
- 코딩
- Today
- Total
지방이의 Data Science Lab
[R] 빅데이터 dcast 램문제를 해결할 수 있는 코딩 본문
빅데이터 ㄹㅇ 빅데이터일때, 2억개넘어가고, 열이 몇백이 넘어가면 코드하나 치고 돌아가는데 거의 10분걸릴때도 있다.
그럴때 유용하다.
INPUT
OUTPUT
RAM을 줄이면서 코딩짜는 방법
(1)
100만 행이 넘어가는 데이터가 큰건 무조건 data.frame이 아니라 data.table로 해야 속도가 엄청 빨라진다.
(2)***
추천시스템 알고리즘을 만들때, dcast가 필요했다.
melt도 해보고, spread도 해보고 다 시도해봤자 데이터 크기가 너무 커서 안됐다.
이때 그나마빠른게 dcas.data.table이라 생각했는데 이를 능가하는 방법이 있다.
#비추천
aa=summarise(group_by(data_m, COMCSNO, PRDKEY), sumqty=sum(DASBLAFT_SALQTY))
sample1=dcast.data.table(aa,COMCSNO~PRDKEY,value.var = "sumqty",sum)
a=spread(데이터프레임, 피벗으로 뺄 열 변수이름, value로 처리할 열 이름)
cast_sparse(data, Row에 넣고 싶은 값, Column에 넣고 싶은 값, value에 들어가면 좋겠는 열)%>%as.matrix%>%as.data.frame
하면 굉장히 빠른 속도로 코드가 돌아간다. 심지어 안돌아가던 코드도 돌아간다.
미쳤다. 신세계다. 굉장히 놀라워하는 이유가 램이 좋은건데도 2-3시간 걸리던게 이 코드로는 3분이면 돌아가기 때문이다.
#추천
dat <- data.frame(a = c("row1", "row1", "row2", "row2", "row2"),b = c("col1", "col2", "col1", "col3", "col4"), val = 1:5)
library(tidytext)
a= cast_sparse(dat, a, b, val)%>%as.matrix.data.frame
a$a = rownames(a)
rownames(a) = NULL
(as.matrix.data.frame 코드가 bytes를 줄일 수 있는 가장 효율적인 방법이다. 하지만, 컴퓨터가 좋지 않아서
Error in asMethod(object) : Cholmod error 'problem too large' at file.. 이런 코드를 얻는 사람은
as.data.frame.array()를 이용하면 dcast.data.table의 램보다는 줄어든 만큼을 필요로하던데, 이조차 안돌아가는 컴퓨터는 어쩔수 없다. ID로 샘플을 추려서 그나마 돌아가는 양을 돌리는 수밖에.
'Data Analysis > 깨R지식' 카테고리의 다른 글
[R] 특정 고객 데이터 추출 (0) | 2019.06.25 |
---|---|
R: package 직접 설치 (0) | 2019.05.02 |
[R] 범주형 숫자형 대용량 데이터 처리 방법 (0) | 2019.04.04 |
[R] 1/1~12/31까지 존재하는 파일들을 한번에 불러와서 합치기 (0) | 2019.03.18 |
[R] 한 폴더 안에 있는 데이터를 몽땅 한 데이터 프레임으로 불러오기 (0) | 2019.03.18 |