본문 바로가기
무모한 도전-주식 인공지능 만들기

빅데이터(?)의 처리하는 방법-2-

by 인터넷떠돌이 2019. 5. 7.
반응형

안녕하세요?

 

지난번 포스팅부터 무언가 pandas의 데이터 프레임으로 처리를 할 수 없는 작업들-제 컴퓨터의 8기가 RAM으로도 메모리 에러라는 메모리 부족 현상때문에 처리할 수 없는 대량의 데이터-저는 이 정도면 사실상 빅데이터라고 하기 싶은데, 상대적으로 가정용으로 가지고 있는 조금은 구형인 PC에서는 처리할 수 없을 정도로 큰 데이터를 어떻게 처리할 수 있는지에 대해서 한번 들어가 보고자 합니다.

 

그래서 지난번에는 왜 인지 계속해서 numpy를 인식하지 못하는 가 했더니, 위 스크린샷에서 나와 있는 것처럼 stack overflow를 찾아 보니까, numpy를 업그레이드 시켜 주라는 이야기가 있었습니다. 그래서 pip install --upgrade numpy라고 입력해서 업그레이드를 시켜 보도록 합니다.

 

다음으로는 위 스크린샷과 같이 pandas로 인식하지 못하기 때문에 역시 같은 pip 명령어를 사용해서 업그레이드를 시켜 보도록 합니다.

 

그렇게 해서 실행을 시키니, 파이참에서는 더 이상 numpy같은게 없다는 메세지는 나오지 않기는 하지만, 여전히 메모리 부족을 호소하고 있습니다.

 

그래서 이번에는 위 스크린샷에서 나와 있는 것처럼 한번 drop.duplicates의 옵션을 바꾸어 보아서 다시한번 시도를 해 보고자 합니다.

 

그리고 나서 하다하다 안 되어서 하는 수 없이 데이터 프레임으로 처음으로 나오는 항목을 위 스크린샷과 같이 dask의 데이터 프레임 형식으로 바꾸어 보도록 합니다.

 

 

그런데 계속해서 위 스크린샷과 같이 무슨 partition의 숫자와 chunksize라는 것을 설정하라고 나오는 것을 확인할 수 있었습니다.

 

일단 처음에는 이게 무슨 에러인지 몰라서, 처음부터 그대로 있는 pandas의 데이터 프레임을 모두 dask의 데이터 프레임을 모두 바꾸어 주도록 합니다.

 

그래도 계속해서 같은 에러가 뜨는 것을 확인할 수 있어서 처음에는 잘 몰랐기 때문에, 이걸 stack overflow에 올려서 계속해서 한번 찾아보도록 했습니다.

 

그 결과 일단은 제가 알아낸 것이라고는 dask의 데이터 프레임이 총 몇개 생성할 것인지 npartitions에서 정해줘야 한다는 것을 알 수 있었습니다. 그래서 일단은 7개를 생성하도록 했습니다.

 

그런데 하다하다 보니, 미쳐 dask의 데이터 프레임으로 변환이 되지 않아 있는 부분이 있기 때문에, 에러가 또 발생을 하는 것이 있습니다. 이 경우는 전형적인 휴먼에러로....... 그냥 바꾸어 주면 해결이 될 듯 합니다.

 

그래서 미처 dask로 되어 있지 않고 그대로 pandas로 되어 있는 부분을 모두 하나같이 dask로 바꾸어 주는 과정을 거치도록 해 봅니다.

 

그런데 여기서 또 다른 에러가 나오는 것을 확인할 수 있었습니다. 여기서 나오는 에러는 다른게 아니라 dask에서는 엑셀에 데이터를 집어넣는 기능이 없다는 에러입니다.

 

그래서 한번 자료를 또 뒤져보니, 위 스크린샷에서 볼 수 있듯이 to_parquet( ) 이라는 함수를 쓸 수 밖에 없는데, 이 함수는 파케이라고 하는 제가 들어본 적이 없는 형식의 데이터 베이스를 만드는 형식으로 저장을 할 수 밖에 없다고 합니다.

 

그렇게 해서 이렇게 마지막으로 그 결과를 어찌되었건 간에 파케이(parquet)라는 형식으로 저장을 하려니까, 이번에는 위 스크린샷에서 볼 수 있듯이 pyarrow라고 하는 새로운 모듈이 필요하다는 것이 나옵니다. 그래서 다음 포스팅에서는 이 pyarrow라는 듣도보도 못한 모듈을 어떻게 설치해서 적용하는 것을 올리고자 합니다.

반응형