데이터분석 17일차

김경원·2025년 11월 11일

현실에서 수집되는 데이터는 대부분 구조가 불완전하고, 불필요한 값이나 오류가 다수 포함되어 있음. 반면, 분석자가 기대하는 형태의 데이터는 정제된 구조와 일관된 형식을 갖춘 경우가 드묾.
이에 따라, 실제 분석 단계에서는 비정형적 자료를 체계적으로 정비하고, 분석 목적에 맞는 형태로 가공하는 과정이 필수적임. 이러한 절차를 데이터 전처리라 함.

데이터 전처리의 핵심은 단순한 정제 행위가 아니라, 분석의 방향성과 목적을 명확히 설정하는 데 있음. 즉, 데이터를 통해 무엇을 확인할 것인지, 어떤 의사결정을 지원할 것인지, 어떤 결과를 도출할 것인지를 사전에 규정하고, 이에 부합하도록 데이터를 정리하는 것이 중요함.

본 과정에서는 Python 기반의 Seaborn 라이브러리에서 제공하는 내장 데이터셋을 활용하여 전처리 과정을 실습함. 각 데이터셋의 주요 내용은 아래와 같음.

iris 데이터셋
붓꽃의 품종별 꽃잎 및 꽃받침의 길이·너비 정보를 포함함.
통계적 분류 및 패턴 분석 예시에 자주 활용됨.

tips 데이터셋
음식점 영수증 내 팁, 총 금액, 요일, 인원 등 서비스 관련 정보를 수록함.
소비 행태 분석 및 회귀 분석 실습에 적합함.

titanic 데이터셋
타이타닉호 승객의 나이, 성별, 객실 등급, 생존 여부 등의 정보를 포함함.
생존율 예측 및 분류 알고리즘 학습 자료로 널리 사용됨.

flights 데이터셋
연도별·월별 항공 운항 건수를 기록한 시계열 형태의 자료임.
추세 분석 및 시계열 예측 실습에 활용됨.

planets 데이터셋
외계 행성 탐사 결과를 집계한 자료로, 관측 방법·질량·공전주기 등 천체물리학 관련 정보를 포함함.
과학 데이터 처리 및 결측치 관리 사례 분석에 유용함.

데이터 전처리는 단순한 정리 단계가 아니라, 분석 목적을 달성하기 위한 기반 조성 절차로서의 의미를 가짐.
따라서, 데이터의 구조적 특성을 면밀히 파악하고, 결측값·이상치·형식 불일치 등을 체계적으로 정비할 필요가 있음.
결과적으로, 전처리 품질이 분석 결과의 신뢰성과 정확성을 좌우하므로, 명확한 목표 인식과 체계적 절차 수립이 바람직함.

데이터 활용 환경이 고도화됨에 따라, 데이터 분석 과정에서 사용되는 도구의 선택은 업무 효율성과 정확성에 중대한 영향을 미침.
이에 따라, 대표적인 데이터 처리 도구인 엑셀(Excel)과 Pandas(Python 기반 데이터 분석 라이브러리)의 특성을 비교하여, 각 도구의 장단점을 체계적으로 검토함.
이를 통해, 데이터의 규모 및 분석 목적에 적합한 도구 선택 방향을 제시함.

  1. 자동화 및 프로그래밍 기능
    Pandas는 다양한 라이브러리를 연계하여 데이터 불러오기, 변환, 분석 등 전 과정을 코드 기반으로 처리함.
    반복적이거나 복잡한 업무를 자동화할 수 있어, 대규모 데이터 관리 효율이 높음.
    엑셀은 시각적 사용자 인터페이스를 기반으로 수작업 중심의 데이터 처리를 수행함.
    매크로나 VBA를 통한 일부 자동화가 가능하나, 프로그래밍 확장성은 제한적임.

  2. 대용량 데이터 처리 능력
    Pandas는 메모리 내 연산 또는 분할 처리 방식을 통해 대용량 데이터셋을 효율적으로 다룸.
    데이터 크기에 따른 유연한 처리 방식이 제공됨.
    엑셀은 상대적으로 소규모 데이터에 적합함.
    파일 용량 제한과 계산 속도 저하로 인해 대규모 자료 처리에는 비효율적임.

  3. 복잡한 데이터 처리 및 분석 기능
    Pandas는 통계 분석, 데이터 변환, 머신러닝 등 복합 연산을 지원함.
    다양한 분석 라이브러리와의 연동이 가능하여, 전문 분석 환경 구축에 용이함.
    엑셀은 기본 함수 및 수식, 피벗 테이블 등을 통해 기초 분석은 가능하나, 복합 데이터 분석에는 한계가 있음.

  4. 확장성과 유연성
    Python 기반 Pandas는 CSV, JSON, SQL 등 다양한 데이터 포맷을 처리하며, 데이터베이스 및 외부 시스템과의 연동이 자유로움.
    환경별 맞춤형 분석 구조를 설계하기에 적절함.
    엑셀은 주로 특정 형식(.xlsx, .csv 등)에 한정되어 있으며, 외부 시스템과의 연계성이 제한됨.

  5. 버전 관리 및 협업 효율성
    Pandas는 Git 등 버전 관리 시스템을 활용하여 코드 변경 이력 추적, 주석 관리, 문서화 등이 체계적으로 가능함.
    협업 시 코드 기반 재현성과 관리 효율성이 높음.
    엑셀은 개별 파일 단위로 작업이 이루어져, 수정 내역 추적 및 변경 관리가 어려움.

컴프리센션, 예외 처리 -> 파이썬이라서 더 중요한 문법

파이써닉(pythonic) 깔끔하고 읽기 좋은 코드로 작성, 일단 시도하고 처리

컴프리헨션: 반복문을 한 줄로 줄이는 문법

for, if

주의사항: 식 자체가 너무 복잡해지면 사용하면 안 됨

리스트 컴프리헨션

[ 표현식 for 변수 in 반복대상 if 조건문 ]

result = []
for i in range(1,5)
result.append(i)

print(result) # [1, 2, 3, 4]

print([i for i in range(1, 5)]) # [1, 2, 3, 4] 리스트 선언, append

result2 = []
for i in range(1,6):
result2.append(i**2)

[i**2 for i in range(1, 6)]

result3 =[]
for i in range(1,6):
result3.append(i)

[i**2 for i in range(1, 6) if i % 2 == 0]

딕셔너리 컴프리헨션 -> 키, 값

{ 키표현식: 값표현식 for 변수 in 반복대상 if 조건 }

students = ['철수', '영희', '유선']
{ student: 0 for student in students }

{'철수': 0, '영희': 0, '유선': 0}

words = ["Python", "Data", "AI"]
lengths = {word: len(word) for word in words}

result = {w: len(w) for w in words if len(w) >= 3}

nums = [1, 2, 3, 4, 5] # 1: 1^2, 2: 2^2
sq = {n: n**2 for n in nums}

키 값 -> for 생성 숫자값으로

[1, 2, 3] 0: 1, 1: 2, 2: 3

names = ["ha", "yh", "jh"]
re = {i: name for i, name in enumerate(names)}

enumerate -> 자동으로 인덱스, 값 -> 쌍으로 생성

names = ["ha", "yh", "jh"]
dict = {}
for i, name in enumerate(names): # (0, "ha"), (1, "yh"), (2, "jh")
dict[i] = name

def solution(my_string):
return my_string.split()
각주 없음

def solution(strArr):
a = []
for i in range(len(strArr)):
if i % 2 == 0:
a.append(strArr[i].lower())
else :
a.append(strArr[i].upper())
return a

인덱스 위치 기준으로 변경

def solution(binomial):
a,op,b = binomial.split() #a,op,b를 공백에 맞게 잘라라
a,b = int(a),int(b) #a,b는 정수임

if op == '+': #op가 +면
    return a + b
elif op == '-': #op가 -면
    return a - b
elif op == '*': #op가 *면
    return a * b

def solution(myString):
return myString.lower()

def solution(arr, idx):
for i in range(idx, len(arr)):
if arr[i] == 1:
return i
return -1

profile
도시의 움직임에는 데이터에 있다

0개의 댓글