판다스 데이터 프레임을 기본 옵션으로 사용하면, 만들어진 데이터 프레임 크기가 큽니다. PC 성능이 받혀주면 부담이 없지만, 그렇지 안다면 용량을 줄여야 합니다. 특히 데이터 타입을 변경하는 것이 효과적인데요. 판다스 데이터 프레임 용량 확인 및 줄이는 방법을 알아보겠습니다.

 

 

1. 용량 확인하는 방법

가장 쉽게 info함수를 이용하면 사이즈가 출력됩니다. 참고로 데이터 프레임은 메모리를 사용하기 때문에, 메모리 용량을 초과하는 작업이 발생하면 파이썬이 죽습니다.

df.info()

 

위와 같이 실행하면 데이터 프레임에 대한 칼럼별 null값 유무와 데이터 타입이 출력됩니다. 그리고 하단에 보면 memory usage 항목이 있는데요. 이 부분이 데이터 프레임의 크기입니다.

 

용량이 작더라도 안심하기는 이른데요. 작업을 할 때 일시적으로 사용하는 메모리 양이 늘어날 수 있고, 다른 프로그램 때문에 사용할 수 있는 메모리가 적어질 수 있기 때문입니다.

 

 

2. 판다스 용량 줄이는 방법

1) 불필요한 데이터를 지운다

당연한 이야기지만 가지고 있는 데이터가 많으면 용량이 큽니다. 불필요한 행이나 칼럼이 있으면 지우는 게 좋습니다.

 

2) 데이터 타입을 바꾼다

보통 int, float, string 데이터 타입을 많이 쓰는데, 가능한 칼럼은 boolean이나 categorical 타입을 쓰면 용량을 줄일 수 있습니다.

 

3) 더 크기가 작은 데이터 타입으로 바꾼다.

2번으로 해결되면 좋지만, 그렇지 않다면 더 작은 크기의 데이터 타입으로 변경해야 합니다. 판다스 int 데이터 타입의 크기는 기본으로 64bit입니다. 이보다 작은 크기의 데이터 타입을 사용하면 크기가 많이 줄어드는데요.

 

이 때는 숫자의 범위를 잘 확인해야 합니다. 데이터 타입의 크기가 작을수록 표현할 수 있는 숫자의 범위가 좁아진다. 그보다 큰 숫자를 넣으면 예측하기 어려운 다른 숫자로 값이 바뀝니다.

 

데이터 타입별 표현할 수 있는 숫자의 범위는 아래와 같습니다.

데이터 타입 숫자 범위
int16 32767 ~ 32768
int32 -2147483648 ~ 2147483647
uint8 0 ~ 255
uint16 0 ~ 65535

 

uint는 unsigned int의 약자로 양수만 가질 수 있는 데이터 타입입니다. 참고로 판다스에서 int타입은 null값을 가질 수 없습니다. null값을 넣으려면 float 데이터 타입을 이용하셔야 합니다.

 

 

위의 데이터 타입으로 변경하기 위해서는 numpy 패키지를 이용해야 합니다. 판다스에서는 지원하지 않더라고요. 코드는 아래와 같습니다. 코드 복사가 안 된다는 분이 있는데, 마우스 우클릭하고 복사하시면 됩니다. Ctrl + C가 작동하지 않는데 저도 이유는 모르겠습니다. ㅜㅜ

from numpy import uint8

df['c'] = df[c'].astype(uint8)

 

제가 해보니까 가장 효과가 높은 것은 3)입니다. 데이터 프레임이 클수록 그 효과가 크실 겁니다.

 

데이터 프레임 용량을 확인하고 줄이는 방법을 알아보았는데요. 용량이 커서 속도가 느릴 때도 위의 방법을 사용하면 좋습니다. 크기 때문에 고민이시라면 한 번 사용해보시기 바랍니다.

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기