반응형
너무 큰 데이터 또는 많은 데이터의 경우 zip으로 압축되어 있음
만약 압축 파일 안에 있는 csv 개수가 297,444개 혹은 그 이상이라고 가정했을 때,
서버에서 압축을 풀고 사용하려면 페이지가 엄청 느려지거나 렉 먹을 가능성이 높음
그렇기 때문에 바로 zip 파일을 읽어와 압축을 풀지 않고 파일들을 불러와 데이터를 보고싶을 수도 있음
만약 형식이 같은 데이터들이라면 각각 29만개 이상으로 두는 것보다 변수 하나 만들어서 레이블을 달고 하나로 합치는 것이 더 효율적일 수 있음
예시로 Ednet 데이터를 이용함 (github.com/riiid/ednet)
아래 코드를 보면, 먼저 zip file을 가져와서 파일 리스트를 만들고 필요없는 파일을 리스트에서 제거한 후 하나의 csv를 만드는 코드임
import pandas as pd
import os
import datetime
import zipfile
import zlib
import re
from tqdm import tqdm_notebook
KT_2_zip = zipfile.ZipFile('./data/EdNet-KT2.zip')
file_list = zipfile.ZipFile.namelist(KT_2_zip)
file_list.remove('KT2/')
file_list.remove('__MACOSX/._KT2')
def make_total_df(zipfile_, file_list):
total_df=pd.DataFrame([], columns=['timestamp', 'action_type', 'item_id', 'source', 'user_answer','platform','user'])
for i in tqdm_notebook(range(len(file_list))):
# read csv file in zip file
df = pd.read_csv(zipfile_.open(file_list[i]))
# to put user information
user=re.split('[/ .]', file_list[i])[-2]
df['user']=user
#concat dataframe
total_df=pd.concat([total_df, df])
return total_df
total_df=make_total_df(zipfile_=KT_2_zip, file_list=file_list)
29만개를 모두 하나로 합치려니 24시간 넘게 걸려서... 샘플로 5000개만 합친 후 to_csv 저장하여 불러온 모습
반응형
'관심있는 주제 > python' 카테고리의 다른 글
Microsoft NNI(Neural Network Intelligence) (0) | 2020.04.14 |
---|---|
sort_values(by='Date') (0) | 2020.04.02 |
Pandas_profiling (0) | 2019.07.05 |
tf.keras.callbacks (0) | 2019.06.18 |