파이썬으로 특정 파일 혹은 CSV파일 합치기

전달 주요 내용

파이썬을 활용하여 폴더 내에 있는 특정 파일이나 특정 확장자 명이 포함된 파일을 불러와서 합칠 때 사용하는 방법

본 포스팅에서는 2022년도 01월 서울시 자치구별 아파트 거래 내역을 합치는 것을 예시로 듬

파일들을 살펴보면 202201_자치구코드.csv 형태로 되어 있는 것을 볼 수 있음

실습예제 파일

 

전제 소스코드

import pandas as pd 
import os 
import glob  
ymd ='202201'
path = 'D:/Work_Python/아파트 매매 실거래/'
read_data = os.listdir(path)
findfile = ymd + '*.csv'
data_list = glob.glob(os.path.join(path, findfile))

# read_data = pd.read_csv(path + ymd + '_' + '*.csv', encoding='EUC-kr')
result_data = []
dataCombine = pd.DataFrame()
for files in data_list:
    df = pd.read_csv(files, encoding='EUC-kr', sep=',', delimiter=None, thousands=',')
    result_data.append(df)
    dataCombine = pd.concat(result_data, axis=0)
dataCombine.to_csv(path + ymd +'_result.csv', encoding='EUC-kr', index = False, sep=',')

 

작업환경

IDE

  • Pycharm 활용

라이브러리

  • pandas : 1. 2. 0
  • glob
  • os

 

코드 설명

라이브러리 선언

import pandas as pd 
import os 
import glob

 

폴도 경로 설정 및 특정 파일 지정하기

ymd ='202201'
path = 'D:/Work_Python/아파트 매매 실거래/'  # 경로 설정하기 
read_data = os.listdir(path)  
findfile = ymd+'*.csv' #202201과 * .csv 파일 찾기  
data_list = glob.glob(os.path.join(path, findfile)) # 찾은 파일 목록 담기

path : 특정 파일 혹은 CSV 파일 위치해 경로 설정하기

os.listdir('D:/Work_Python/아파트 매매 실거래/') : 파일 경로 설정하기

ymd : 2022년01로 시작하는 폴더만 찾기 위해서 설정

findfile : ymd+'*.csv' : 202201+ 중간에 자치구를 찾기 위해 *를 활용, 마지막엔 .csv 확장자 설정

 

파일 합치고 csv 파일로 저장하기

result_data = []
dataCombine = pd.DataFrame()
for files in data_list:
    df = pd.read_csv(files, encoding='EUC-kr', sep=',', delimiter=None, thousands=',')
    result_data.append(df)
    dataCombine = pd.concat(result_data, axis=0)
dataCombine.to_csv(path + ymd +'_result.csv', encoding='EUC-kr', index = False, sep=',')

result_data = [] : 파일 담을 리스트 설정하기

for files in data_list: : for 문으로 찾은 파일 목록을 files에 할당하기

df = pd.read_csv(files, encoding='EUC-kr', sep=',', delimiter = None, thousands=',') : 읽은 csv 파일을 데이터프레임의 df에 할당, sep = csv 파일에서 구분자를 선언함(csv 파일중 , tab 형태로 구분 된 것을 csv 파일에서 확인 후 지정

  • csv 파일 별 다양한 인코딩이 존재(utf-8, ansi, euc-kr 등)하며 본 포스팅의 파일은 EUC-kr임

result_data.append(df) : df 파일 하나씩 더하기 위해서 append 함수 설정

dataCombine = pd.concat(result_data, axis=0) : 세로로 합치기 위해서 설정

  • axis =0 은 새로로 합치기, asix=1은 가로로 합치기

dataCombine.to_csv(path + +ymd+'_result.csv', encoding='EUC-kr', index = False, sep',') : 합쳐진 파일을 다시 CSV 파일로 저장하기 위한 설정으로 path 앞에서 제시한 경로

 

결과물

아래그림의 마지막 줄에 보면 202201_*.csv 형태의 파일이 모두 모두 합쳐진 것을 알 수 있음

csv파일을 합친 최종결과물 파일

관련 포스팅

댓글

Designed by JB FACTORY