[SK네트웍스 패밀리 엔코어AI캠퍼스] AI 머신러닝 캠프 1기_7월 4주차 회고

[SK네트웍스 패밀리 엔코어AI캠퍼스] AI 머신러닝 캠프 1기_7월 4주차 회고

엔코아 AI 캠퍼스에서 첫 주는 Orientation과 하루 일정의 교육이 이루어 지다 보니, 이번 주가 본격적인 첫 주라고 봐야 할 것 같다. 정말 시간이 눈 깜짝할 사이에 지났다. 이번 주는 AI 개발자의 가장 기본이 되는 Python Programming 능력을 다지고, 실제 데이터 분석의 핵심인 데이터 수집과 전처리 기술을 습득하는 매우 중요한 시간이었다. Python의 핵심 문법부터 라이브러리를 활용한 실무 기술까지, 적지 않은 양을 학습했고, 학습한 것들을 정리해 본다.

1. Python Programming 문법

가장 먼저 프로그래밍의 기초가 되는 변수와 제어문을 시작으로 코드의 재사용성을 높여주는 함수와 복잡한 데이터를 효율적으로 다루기 위한 자료구조를 학습했다.

(1) Python 핵심 문법 정리

- 제어문 : if, for, while 등 조건에 따른 흐름 제어 및 반복 작업 수행

- 자료구조 : 리스트(List), 튜플(Tuple), 딕셔너리(Dictionary), 세트(Set) 등 데이터 특성에 맞는 저장 및 관리

- 함수(Function) : 코드의 논리적 단위 분리, 매개변수와 반환 값을 활용한 코드 재사용성 극대화

# 자료구조와 함수 활용 예시
def process_data(data_list):
    result = {}
    for item in data_list:
        if item not in result:
            result[item] = 1
        else:
            result[item] += 1
    return result

data = ['apple', 'banana', 'apple', 'orange', 'banana']
count_result = process_data(data)
print(count_result)  # 출력: {'apple': 2, 'banana': 2, 'orange': 1}

Python의 자료 구조

Python's Function Definition

이어서 프로그램의 안정성을 높이는 예외처리와 코드를 구조화하는 모듈(Module), 클래스(Class) 개념을 학습했다. 특히, 클래스는 객체 지향 프로그래밍(Object Oriented Programming)의 핵심으로 복잡한 AI 프로젝트를 설계할 때 필수적임을 알 수 있었다.

(2) 객체 지향 프로그래밍(OOP, Object Oriented Programming)의 근본, 클래스(Class)

- 예외처리(try-except) : 프로그램 실행 중 발생할 수 있는 오류에 대비하고 처리하여 안정성을 확보

- 모듈(Module)과 패키지(Package) : 관련 있는 변수, 함수, 클래스를 파일 단위로 모아 관리하고 재사용

- 클래스(Class) : 속성(변수, Attribute)과 행위(메서드, Method)를 설계하여 객체를 생성하는 구조체

Class, Object와 상속 구조


2. 데이터 분석의 시작 (Python 환경의 데이터 수집)

Python 기초를 다진 후, 본격적인 데이터 분석을 위해 다양한 방법으로 데이터를 수집하는 기술을 배웠다. API 활용부터 웹 크롤링까지 실무에서 데이터를 얻는 핵심 기술들이다.

Beautiful & Selenium 웹 데이터 파싱 및 정제


(1) 주요 데이터 수집 기술

- Open API : 공공데이터포털, 네이버 개발자 센터 등에서 제공하는 정형 데이터를 JSON, XML 형식으로 수집

- 웹크롤링 & 스크래핑 : BeatifulSoup, requests 를 사용해 정적 웹페이지 데이터를 추출하고, Playwright (또는Selenium) 를 활용해 동적 웹페이지까지 구현해 봄

- Sniffing (Network 분석) : 브라우저의 Network 탭을 활용해 숨겨진 내부 API 요청을 역추적(Network Sniffing)하여 효율적으로 데이터를 수집하는 고급 기술 익힘

수집 과정에서 크롤링 매너를 지키고 서버에 부하를 주지 않도록 유의하는 것이 중요함을 실습을 통해 학습 했다.

3. Pandas 라이브러리와 데이터 분석

마지막으로 수집한 데이터를 분석 가능한 형태로 가공하는 전처리 과정의 핵심 도구, Pandas 라이브러리를 학습 했다. 데이터 분석 및 AI 모델링 작업의 80% 이상이 전처리 임을 체감하며, Pandas 핸들링 능력이 데이터 분석의 성패에 지대한 영향을 미칠 수 있다는 것을 알 수 있었다.

Pandas 데이터 구조 (Series & DataFrame)


(1) Pandas 핵심 기능과 전처리 파이프라인

- DataFrame : 2차원 표 형식의 데이터 구조로, 엑셀 시트와 유사하여 직관적인 데이터 다루기가 가능

- 데이터 조회 및 선택 : loc, iloc, Boolean 필터링 등을 활용해 원하는 데이터만 정교하게 추출

- 데이터 정제

  - 결측치(NaN) : isna().sum() 으로 확인하고, dropna() 으로 지우거나, fillna() 으로 대체. 이상치가 존재할 경우 평균값(average()) 대신 중앙값(median()) 으로 대체하는 것이 안전

  - 이상치 : 정상 범위를 크게 벗어나는 극단값(예: 수량 999)은 조건 필터링으로 제거하거나, clip(upper=N) 을 적용하여 상한을 지정

- 형변환 및 파생 변수 : 문자열 가격(5,000)의 콤마 제거 후 .astype(int) 로 형변환, 날짜형 변환 (pd.to_datetime()), 가격x수량으로 '총액' 열 생성 등 분석용 데이터 가공

import pandas as pd
import numpy as np

# 데이터 전처리 파이프라인 예시
df = pd.read_csv("data/cafe_sales.csv")[cite: 5]

# 1. 문자열 가격 정수화 (콤마 제거)
df['가격'] = df['가격'].str.replace(',', '').astype(int)[cite: 5]

# 2. 수량 이상치 처리 (999 -> 중앙값 대체)
df.loc[df['수량'] == 999, '수량'] = np.nan[cite: 5]
df['수량'] = df['수량'].fillna(df['수량'].median()).astype(int)[cite: 5]

# 3. 파생 변수 생성 (총액)
df['총액'] = df['가격'] * df['수량'][cite: 5]

display(df.head())[cite: 5]

결측치 및 이상치 처리 전후 비교

이번 한 주는 AI 개발자로서의 가장 기본이 되는 Python 프로그래밍 능력을 다지고, 실제 데이터 분석의 핵심인 데이터 수집과 전처리 기술을 습득하는 매우 중요한 시간 이었다. 방대한 양의 기초 문법을 익히고, 크롤링 기술을 배우며 다양한 데이터 소스에 접근하는 법을 실습해 보았다. Pandas 라이브러리를 통해 지저분한 원본 데이터를 깨끗한 분석용 표로 바꾸는 전처리 파이프라인을 체험할 수 있었다. 특히, 조건 필터링 시, 괄호 미적용으로 인한 에러나 콤마가 포함된 문자열의 형변환 에러 등 실무에서 발생할 수 있는 오류들을 확인하고 해결해 보면서 Pandas 핸들링 감각을 조금은 알 수 있었다.

Python과 데이터 수집, Pandas를 통한 데이터 전처리까지 통합적인 흐름을 이해할 수 있었다. 다음주부터 이어질 본격적인 데이터 탐색(EDA) 및 시각화 단계에서도 이번 주에 다진 기본기를 잘 활용해서 의미 있는 인사이트를 도출해 낼 수 있기를 기대해 본다.


#Python #DataAnalysis #Pandas #WebCrawling #Preprocessing #SKNetworks #파이썬 #데이터분석 #판다스 #웹크롤링 #데이터전처리 #엔코아AI캠퍼스 #WIL


댓글

이 블로그의 인기 게시물

[SK네트웍스 family 엔코아AI캠퍼스] 나의 목표는 머신러닝 엔지니어다.

[SK네트웍스 패밀리 엔코어AI캠퍼스] AI 머신러닝 캠프 1기_7월 3주차 회고