Skip to content
toylee blog
toylee blog

컴퓨터·IT 문제 해결과 최신 기술 정보

  • 홈
  • 컴퓨터 활용
  • 프로그래밍
    • 파이썬
    • 자바(Java)
    • Flutter
    • HTML
    • Linux
    • 워드프레스
  • 맥북
  • IT 일반
  • 블로그 소개
  • 문의하기
toylee blog

컴퓨터·IT 문제 해결과 최신 기술 정보

파이썬 CSV 자동 정리 스크립트 작성법: 데이터 전처리 요령

toylee, 2026년 10월 15일

파이썬으로 CSV 파일을 다뤄야 하는 이유

업무를 하다 보면 엑셀이나 데이터베이스에서 추출한 CSV 파일을 매일 마주하게 됩니다. 하지만 이 파일들은 늘 정돈되어 있지 않습니다. 공백이 포함되어 있거나, 누락된 데이터가 있거나, 날짜 형식이 제각각인 경우가 많습니다. 이 글에서는 외부 라이브러리 설치 없이 파이썬 표준 라이브러리인 csv와 datetime 등을 활용해, 지저분한 CSV 파일을 자동으로 정리하고 표준화하는 실무형 스크립트 작성 방법을 살펴봅니다.

[목차]

  • 파이썬으로 CSV 파일을 다뤄야 하는 이유
  • 실무에서 마주하는 지저분한 데이터의 문제점
  • csv 모듈을 활용한 기본 읽기 및 쓰기 구조
  • 실전 CSV 자동 정제 스크립트 예제
  • 코드 동작 방식 상세 해설
  • 작업 효율을 높이는 실무 체크리스트
  • 초보자들이 자주 범하는 실수
  • 마무리하며

이 글을 끝까지 읽으시면 불필요한 공백 제거, 빈 값 처리, 그리고 날짜 포맷 통일을 자동으로 처리하는 파이썬 코드를 직접 작성하고 자신의 업무에 바로 적용할 수 있게 됩니다.

실무에서 마주하는 지저분한 데이터의 문제점

데이터 분석이나 보고서 작성을 위해 CSV 파일을 불러올 때 가장 흔하게 발생하는 문제는 다음과 같습니다. 문자열 앞뒤에 보이지 않는 공백이 있어 정확한 그룹화가 안 되거나, 값이 비어 있어서 프로그램이 멈추는 현상입니다. 또한 작성자마다 제각각 입력한 날짜 데이터는 시계열 분석을 불가능하게 만듭니다.

수동으로 엑셀을 열어 셀 하나하나를 수정하는 것은 데이터 양이 늘어날수록 시간 낭비일 뿐만 아니라 휴먼 에러를 유발합니다. 파이썬 스크립트를 통해 이를 자동화하면 반복 업무를 줄이고 일관된 품질의 정제된 데이터를 얻을 수 있습니다.

csv 모듈을 활용한 기본 읽기 및 쓰기 구조

파이썬은 기본적으로 CSV 파일을 다루기 위한 csv 표준 라이브러리를 제공합니다. 별도의 설치 과정 없이 import csv를 통해 바로 사용할 수 있습니다. 파일을 열 때는 인코딩 문제(주로 한글 윈도우 환경의 cp949와 utf-8 충돌)를 방지하기 위해 encoding='utf-8-sig'를 지정하는 것이 안전합니다.

기본적인 파일 처리 흐름은 원본 파일을 읽기 모드로 열고, 데이터를 순회하며 정제한 뒤, 새로운 결과 파일에 쓰기 모드로 저장하는 방식으로 구성됩니다.

실전 CSV 자동 정제 스크립트 예제

아래 코드는 실제로 업무에서 자주 발생하는 세 가지 문제(공백 제거, 결측치 대체, 날짜 포맷 통일)를 한 번에 처리하는 예제 스크립트입니다.

import csv
from datetime import datetime

def clean_csv_data(input_filename, output_filename):
    cleaned_rows = []
    
    # 원본 파일 읽기
    with open(input_filename, mode='r', encoding='utf-8-sig') as infile:
        reader = csv.DictReader(infile)
        fieldnames = reader.fieldnames
        
        for row in reader:
            # 1. 모든 필드 값의 앞뒤 공백 제거
            cleaned_row = {key: (value.strip() if value else "") for key, value in row.items()}
            
            # 2. 결측치(빈 값) 처리: 특정 컬럼이 비어있으면 'N/A'로 대체
            if not cleaned_row.get('Category'):
                cleaned_row['Category'] = 'N/A'
                
            # 3. 날짜 형식 표준화 (예: YYYY-MM-DD 형태로 변환)
            date_str = cleaned_row.get('Date')
            if date_str:
                try:
                    # 다양한 포맷으로 들어온 날짜를 파싱 후 표준 포맷으로 변환
                    parsed_date = datetime.strptime(date_str, '%Y/%m/%d')
                    cleaned_row['Date'] = parsed_date.strftime('%Y-%m-%d')
                except ValueError:
                    # 형식이 맞지 않는 경우 원본 유지 또는 기본값 설정
                    pass
                    
            cleaned_rows.append(cleaned_row)
            
    # 정제된 데이터 새로운 파일로 저장
    with open(output_filename, mode='w', encoding='utf-8-sig', newline='') as outfile:
        writer = csv.DictWriter(outfile, fieldnames=fieldnames)
        writer.writeheader()
        writer.writerows(cleaned_rows)
        
    print(f"파일 정리가 완료되었습니다. 저장된 파일: {output_filename}")

if __name__ == '__main__':
    clean_csv_data('raw_data.csv', 'cleaned_data.csv')

코드 동작 방식 상세 해설

위 스크립트는 DictReader를 사용하여 각 행을 딕셔너리 형태로 읽어옵니다. 이를 통해 컬럼 인덱스 번호 대신 컬럼 이름을 직접 키로 사용할 수 있어 가독성이 높아지고 유지보수가 편리해집니다.

  • 공백 제거: value.strip()을 통해 셀 데이터 양끝에 붙은 보이지 않는 공백을 제거합니다.
  • 결측치 처리: 값이 존재하지 않는 경우 빈 문자열 상태로 두지 않고 'N/A'와 같은 기본값으로 채워 후속 작업에서의 에러를 예방합니다.
  • 날짜 포맷 정규화: strptime과 strftime 조합을 통해 서로 다른 형태로 입력된 날짜 문자열을 일관된 시스템 표준형으로 맞춥니다.

작업 효율을 높이는 실무 체크리스트

CSV 정제 스크립트를 작성하고 실행할 때 반드시 점검해야 할 항목들을 정리했습니다.

  • 인코딩 확인: 한글이 깨지는 현상이 발생한다면 읽기와 쓰기 모두에 encoding='utf-8-sig'가 올바르게 지정되었는지 확인했는가?
  • 헤더 존재 여부: 첫 번째 행이 데이터가 아니라 컬럼 이름(헤더)인지 확인하고 DictReader가 올바르게 인식하고 있는가?
  • 줄바꿈 처리: 윈도우 환경에서 저장할 때 빈 행이 추가로 생기는 것을 막기 위해 outfile 오픈 시 newline='' 옵션을 추가했는가?
  • 예외 처리: 날짜 파싱이나 숫자 변환 시 잘못된 데이터로 인해 스크립트가 중단되지 않도록 try-except 구문이 적절히 배치되었는가?

초보자들이 자주 범하는 실수

CSV 정제 코드를 처음 작성할 때 흔히 겪는 시행착오와 해결 방법입니다.

구분 흔한 실수 올바른 대처 방법
인코딩 오류 기본 open() 함수 사용으로 한글 깨짐 발생 항상 encoding='utf-8-sig'를 명시하여 엑셀 호환성을 높입니다.
원본 덮어쓰기 원본 raw 파일에 직접 정제 결과를 덮어써서 데이터 유실 반드시 새로운 파일 이름(예: cleaned_data.csv)으로 결과를 저장합니다.
불필요한 공백 방치 키 값에 공백이 남아 딕셔너리 매칭 실패 데이터뿐만 아니라 컬럼 헤더 이름에도 strip()을 적용하는지 확인합니다.

마무리하며

파이썬의 기본 csv 모듈과 간단한 제어문을 활용하면 반복적이고 지루한 데이터 전처리 업무를 단 몇 초 만에 끝낼 수 있습니다. 오늘 다룬 예제를 바탕으로 자신의 업무 환경에 맞는 규칙들을 하나씩 추가해 나간다면, 데이터 관리의 정확성과 속도를 모두 크게 향상시킬 수 있을 것입니다.

파이썬

글 탐색

Previous post

Related Posts

파이썬

Qt Designer download

2024년 06월 24일

Qt Designer는 C++와 Python을 포함한 여러 프로그래밍 언어를 사용하는 개발자들에게 필요한 도구입니다. Qt Designer의 특징과 사용법, 설치 방법, 그리고 Qt Designer download 까지 자세히 알아보겠습니다.

Read More
파이썬

파이썬 QMessageBox, 다이얼로그, 파일창

2023년 05월 20일

PyQt6는 다양한 GUI 요소를 제공하며, 메세지박스(QMessageBox)는 그 중 하나입니다. 메세지박스는 알림 또는 입력 상자와 같은 팝업 창을 말합니다. 파이썬 QMessageBox 외 다이얼로그, 파일창 예제까지 같이 알아보겠습니다.

Read More
파이썬

컴퓨터 공유하는 방법

2024년 08월 08일

컴퓨터를 공유하는 방법은 다양한 상황에서 유용하게 활용될 수 있습니다. 예를 들어, 가족 구성원이나 동료들과 파일을 함께 사용해야 할 때, 또는 공동 작업을 진행할 때 컴퓨터를 공유하는 것이 필요할 수 있습니다. 또한, 작업을 효율적으로 수행하기 위해 자원 공유를 통해 협업을 극대화할 수 있습니다. 본 기사에서는 컴퓨터 공유의 기본 개념부터 다양한 방법까지…

Read More

최신 글

  • 파이썬 CSV 자동 정리 스크립트 작성법: 데이터 전처리 요령
  • 브라우저 캐시 삭제가 필요한 경우와 상황별 대처 요령 정리
  • 맥북 발열 줄이는 기본 설정: 성능 저하를 막는 실무 관리 요령
  • 에러 로그 읽는 습관 만들기: 개발 속도를 높이는 오류 분석 요령
  • 링크 태그 접근성 체크리스트: 누구나 이해할 수 있는 웹사이트 연결 만들기

최신 댓글

보여줄 댓글이 없습니다.

보관함

  • 2026년 10월
  • 2026년 9월
  • 2026년 8월
  • 2026년 2월
  • 2025년 7월
  • 2025년 6월
  • 2025년 5월
  • 2025년 4월
  • 2025년 3월
  • 2025년 2월
  • 2025년 1월
  • 2024년 12월
  • 2024년 11월
  • 2024년 8월
  • 2024년 6월
  • 2024년 5월
  • 2024년 3월
  • 2024년 2월
  • 2023년 11월
  • 2023년 9월
  • 2023년 8월
  • 2023년 7월
  • 2023년 6월
  • 2023년 5월
  • 2023년 4월
  • 2023년 3월
  • 2023년 2월

카테고리

  • Flutter
  • HTML
  • IT 일반
  • Linux
  • 맥북
  • 워드프레스
  • 자바(Java)
  • 컴퓨터 활용
  • 파이썬
  • 프로그래밍

사이트 안내

  • 블로그 소개
  • 문의하기
  • 개인정보 처리방침
©2026 toylee blog | WordPress Theme by SuperbThemes