본문 바로가기
분석하는 마케터

[CSV 다루기] Python으로 파일 쪼개기/분리하기 (feat.Pandas)

by TREBOR 2021. 1. 17.

파이썬 판다스 - 폴더에 있는 모든 csv 파일을 mb 단위로 쪼개기/분리하기feat.Pandas)

대량의, 크기가 큰 csv 파일을 어딘가에 업로드 해야하거나,

직접 열어서 보고 수정하면 편할 일이 있는 데 csv가 너무 길어서 쪼개기 전엔 그게 안될 때.

 

한 폴더에 csv 파일들을 몰아넣고 한번에 원하는 행수대로 쪼개줄 수 있다.

 

import pandas as pd
import os

filePath = 'C://Users//'  # 폴더 주소 입력
fileAll = os.listdir(filePath)

for file in fileAll:
    rowsize = sum(1 for row in (open(filePath + file, encoding='UTF-8')))
    newsize = 5000000   # 쪼개고 싶은 행수 수준으로 입력. 이정도 행수는 200mb 이하임.
    times = 0
    for i in range(1, rowsize, newsize):
        times += 1   # 폴더 내 파일을 하나씩 점검하면서, 입력한 newsize보다 넘는 행을 쪼개줌
        df = pd.read_csv(filePath + file, header=None, nrows = newsize, skiprows=i)
        csv_output = file[:-4] + '_' + str(times) + '.csv'   # 쪼갠 수만큼 _1, _2... _n으로 꼬리를 달아서 파일명이 저장됨
        df.to_csv(filePath + csv_output, index=False, header=False, mode='a', chunksize=rowsize)

 

간단하게 그 폴더에 있는 모든 csv 파일이 행수 기준으로 쪼개짐!!!

물론 이 코드로는... 쪼갤 필요가 없는(크기가 작은...) csv 파일도 _1 꼬리를 달아 저장이 되긴 한다.

 

 

 

댓글