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

파이썬

PyQt6 QPropertyAnimation Framework

2023년 05월 25일

GUI의 기능성은 중요하지만, 눈에 띄는 시각적인 요소도 중요합니다. GUI 요소에 애니메이션과 동적인 움직임을 추가하여 시각적으로 매력적인 GUI를 만들 수 있습니다. 이 글에서는 PyQt6 QPropertyAnimation Framework 를 살펴보고 GUI 안에 움직이는 방법에 대해 같이 알아보겠습니다. 1. PyQt6 QPropertyAnimation Framework 란? PyQt6 애니메이션 프레임워크는 Qt의 애니메이션 프레임워크를 기반으로 구축되었으며, GUI에 애니메이션을 만드는…

Read More
파이썬

PyQt6 계산기 만들기

2023년 05월 15일

프로그래밍을 배우는 많은 사람들이 자신의 첫 번째 프로그램으로 계산기를 만드는 것을 선택합니다. 그 이유는 계산기를 만들면, 파이썬에서 GUI 프로그래밍의 기본 개념을 배울 수 있기 때문입니다. 심플한 PyQt6 계산기 만들기 및 방법을 배울 것입니다.

Read More

하드 디스크 파티션 합치기

2024년 12월 07일

하드 디스크 파티션 합치기는 컴퓨터의 저장 공간 관리에 있어 중요한 과정입니다. 많은 사용자들이 하드 디스크의 용량을 최적화하고 자유로운 공간을 확보하기 위해 이러한 작업을 수행합니다. 파티션은 데이터의 조직화를 도와주지만, 때로는 여러 개의 작은 파티션이 불편함을 초래할 수 있습니다. 이러한 경우, 파티션을 합치는 것이 효율적일 수 있습니다. 이번 글에서는 하드 디스크 파티션을…

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