Dataframe 메모리 사이즈 계산

Python에서 데이터 관리할때 Dataframe을 사용하는게 좋을까 아니면 Array형태가 좋을까?

그래서 직접 코드를 만들어서 계산해보니 1000만건 데이터 기준으로 Array는 78MB, Dataframe은 381MB를 차지한다. Dataframe이 무려 5배 메모리를 사용한다.

그래서 기본적으로 Array를 사용하고 필요할때만 Dataframe을 사용해야 한다.

# -*- coding: utf-8 -*-

import os
import sys
import pandas as pd

headers = ['a','b','c','d','e']
rows = []
for x in range(0,10000000):
    rows.append(['a'*5,'b'*5,'c'*5,'d'*5,'e'*5])

df = pd.DataFrame(rows, columns=headers)
print('Dataframe size : ', round(df.memory_usage().sum()/1024/1024))

with open('test_pandas.bin', 'wb') as f:
    pickle.dump(rows, f)
    
print('Binary size : ', round(os.path.getsize('test_pandas.bin')/1024/1024))

print('Array size : ', round(sys.getsizeof(rows)/1024/1024))

Dataframe size :  381MB

Binary size :  172MB

Array size :  78MB