15. 단순 반복 업무 줄이기 1

Ryan·2025년 1월 9일

SQL/Python 분석

목록 보기
18/94

15. 단순 반복 업무 줄이기 1

파일 다루기: 반복 작업을 효율적으로 처리하기

대량의 파일을 처리해야 할 때, 수작업으로 하나씩 작업하는 대신 Python으로 자동화하여 시간과 노력을 절약할 수 있습니다.


1. 기본 접근 방식

초기에 파일을 하나씩 처리하는 코드는 다음과 같습니다:

python
코드 복사
# 개별 파일 경로 지정 및 처리
route1 = 'path/to/your/file1.csv'
route2 = 'path/to/your/file2.csv'
route3 = 'path/to/your/file3.csv'

df1 = pd.read_csv(route1, encoding='cp949')
df2 = pd.read_csv(route2, encoding='cp949')
df3 = pd.read_csv(route3, encoding='cp949')

이 방식은 파일 수가 적을 때는 문제가 없지만, 대량의 파일을 처리할 경우 비효율적입니다.


2. 자동화 접근: 디렉토리 내 모든 파일 처리

Python의 os 라이브러리를 사용하여 디렉토리 내 파일을 자동으로 불러오고 처리할 수 있습니다.

python
코드 복사
import os
import pandas as pd

# 작업 디렉토리 설정
source_dir = 'path/to/source/directory'  # 원본 파일 위치
destination_dir = 'path/to/destination/directory'  # 저장할 위치

# 디렉토리 내 파일 리스트 가져오기
file_list = os.listdir(source_dir)

# 파일 저장 폴더 생성 (존재하지 않으면 생성)
if not os.path.exists(destination_dir):
    os.mkdir(destination_dir)

# 파일 처리 반복문
for file_name in file_list:
    print(f'{file_name}를 처리하고 있습니다...')

    # 파일 불러오기
    file_path = os.path.join(source_dir, file_name)
    df = pd.read_csv(file_path, encoding='cp949')

    # 데이터 재구조화 및 전처리
    result = df.melt(id_vars=df.columns[:3], var_name='날짜', value_name='거래액')
    result['거래액'] = result['거래액'].apply(str_to_int)
    result = result[result[result.columns[0]] != '합계']
    result = result[result[result.columns[2]] != '계']
    result = result[result[result.columns[1]] == '소계']
    result.drop('상품군별(2)', axis='columns', inplace=True)
    result['날짜'] = result['날짜'].apply(remove)
    result['날짜'] = result['날짜'].apply(lambda x: x.replace('.', '/'))

    # 처리된 파일 저장
    save_path = os.path.join(destination_dir, file_name)
    result.to_csv(save_path, encoding='cp949', index=False)
    print(f'{file_name} 처리 완료.')

3. 주요 코드 설명

  1. os.listdir()
    • 지정된 디렉토리 내의 모든 파일 이름을 리스트로 반환합니다.
    • 예: ['file1.csv', 'file2.csv', 'file3.csv']
  2. os.path.join()
    • 파일 경로와 파일 이름을 결합하여 전체 경로를 생성합니다.
    • 예: 'path/to/directory' + '/' + 'file1.csv'
  3. 자동화된 처리
    • 각 파일에 대해 데이터를 불러오고, 전처리 작업(예: 재구조화, 문자열 처리 등)을 적용한 후 저장합니다.

4. 결과

이 코드를 사용하면 디렉토리에 있는 모든 파일이 자동으로 처리되고, 결과가 지정된 폴더에 저장됩니다.

  • 원본 디렉토리: path/to/source/directory
  • 저장 디렉토리: path/to/destination/directory

요약

  1. 반복 작업을 자동화하여 시간 절약.
  2. Python의 os 라이브러리를 사용해 파일을 동적으로 처리.
  3. 데이터를 전처리 후 결과를 자동으로 저장.

0개의 댓글