728x90

다음과 같이 전처리 후, 생성된 데이터 프레임을 저장하는 방식은 여러가지가 있다. 이때 저장되는 타입별로 load하는 시간, 파일 용량이 각각 다르므로 가장 빠른것을 선택해 사용하는것을 추천한다.
1. npz, npy로 저장
dataframe에 있는 값들을 가져오고, key=value 값을 넣어준 후, npz형식으로 데이터 저장
import numpy as np
# 저장
np.savez('test.npz',**{name:value for name,value in zip(list(df.columns), df.to_numpy().T)})
# data load (이후, 데이터프레임으로 변경하고 싶은 경우 allow_pickle True로 설정)
data = np.load('test.npz', allow_pickle=True)
# column값들 추출
data.files
# 데이터 프레임 형식으로 변환
df= pd.DataFrame.from_dict({item: data[item] for item in data.files})
# 다른 형식으로 npy 저장
np.save('test.npy', df.to_numpy())
2. pickle로 저장
import pickle
# 저장
df.to_pickle('test.pkl')
# 로드
df = pd.read_pickle(".test.pkl")
3. feature로 저장
import pandas as pd
# 저장
df.to_feather("df.feather")
# 로드
df = pd.read_feature("df.feather")
4. parquet로 저장 (가장 빠른 방식)
import pandas as pd
# 저장
df.to_parquet("df.parquet")
# 로드
df = pd.read_parquet("df.parquet")
출처: https://towardsdatascience.com/the-best-format-to-save-pandas-data-414dca023e0d
The Best Format to Save Pandas Data
A small comparison of various ways to serialize a pandas data frame to the persistent storage
towardsdatascience.com
추가로, pandas에서 메모리를 감소시키는 방법으론
1. 데이터 단위 줄이기 (dataframe은 기본적으로 64bit이므로 32bit 혹은 16bit로 줄여주기)
bit의 범위를 바꿔주면 데이터에 따라 데이터의 정보를 잃을 수도 있음. 유의하여 진행
data[{column_name}] = data[{column_name}].astype(np.int32)
2. dataframe을 numpy로 접근해서 사용
from tqdm import tqdm
# 모든 행값 출력
for rows in tqdm(df.to_numpy(), total=len(df), position=0, leave=True):
print(rows)
2가지 방법이 있다.
728x90
'개발관련' 카테고리의 다른 글
[Error] modulenotfounderror: no module named 'pip._internal' 해결 방법 (0) | 2023.04.26 |
---|---|
[개발 환경 구축] Ubuntu18.04 LTS에 Python 3.8 업그레이드 하는 방법 (0) | 2023.04.26 |
ChatGPT 리뷰 - 요즘 핫한 ChatGPT를 사용해본 후기 (0) | 2022.12.15 |
AWS EC2 VNC서버를 이용하여 GUI툴 사용하는 방법 - (MAC Viewer) (0) | 2022.11.27 |
Data Infra (0) | 2021.07.18 |
댓글