라벨이 TIL인 게시물 표시

[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_re...

Day006 - Pandas 라이브러리와 데이터 분석

이미지
Day006 - Pandas 라이브러리와 데이터 분석 오늘은 Python 데이터 분석의 핵심 도구인 판다스(Pandas) 라이브러리를 활용하여 데이터프레임(DataFrame)을 조회, 선택, 정렬하고 결측치∙이상치 정제 및 파생 변수를 생성하는 전체 데이터 전처리 흐름을 학습 했다. Pandas DataFrame 및 Series 구조 1. 데이터 분석 : Pandas 라이브러리와 데이터프레임 기초 순수 Python의 반복문(for문 또는 while문)과 리스트(List) 기반 작업에서 벗어나 2차원 표(Table) 형태 구조를 효율적으로 다루기 위해 Pandas 를 사용한다. Pandas 의 핵심 자료구조는 1차원 열 구조인 Series 와 2차원 표 구조인 DataFrame 이다. (1) 데이터 구조 확인 및 탐색 데이터를 블러온 후 데이터의 전체적인 윤곽을 파악하기 위해 다음 메서드(Method)들을 필수적으로 사용한다. - df.head(n) / df.tail(n) : 상단 및 하단 n개 행 미리보기 - df.shape : (행 수, 열 수) 형태의 차원 확인 - df.info() : 각 열의 자료형, 결측치(Non-Null) 수 요약 - df.describe() : 수치형 열의 기술통계량(평균, 표준편차, 중앙값 등) 확인 import pandas as pd import numpy as np # CSV 파일 읽기 및 기초 탐색 df = pd.read_csv("data/cafe_sales.csv")[cite: 3] print("데이터 차원:", df.shape)[cite: 3] print(df.info())[cite: 3] display(df.describe())[cite: 3] (2) 열/행 선택 및 필터링 - 열(Column) 선택 : 단일 대괄호 df['열'] 은 Series 로 반환 되고, 이중 대괄호 df[['열1', '열2']] 는 DataFra...

Day005 - 데이터 수집(Data Acquisition)

이미지
Day005 - 데이터 수집(Data Acquisition) 오늘은 데이터 분석의 첫 단계인 '데이터 수집(Data Acquisition)' 기법 전반을 학습했다. 네이버(Naver)와 공공데이터 포털(Data.go.kr)의 공개 API를 활용부터 브라우저 내장 개발자 도구 분석, 정적∙동적 웹 크롤링(Web Crawling)까지 데이터 수집의 대표적인 방법을 실습 했다. Naver Developers 1. 공개 API 활용 먼저 Open API(Application Programming Interface) 를 활용해 안전하고 정형화된 데이터를 수집했다. API Key 관리를 위해 보안에 유의하며, python-dotenv 라이브러리로 .env 파일에 비밀 Key를 격리 했다. - 네이버 API : requests 모듈(Module) 로 블로그 검색 및 이미지 검색을 수행하고, 특수 문자를 제거하는 정규식 함수를 작성해 이미지 파이프라인을 구축 했다. - 공공데이터 포털 API : 출입국 관광 통계 API를 활용해 국적/월별 방한 외래 관광객 수치 데이터를 JSON 형태로 수집 했다. import os import requests from dotenv import load_dotenv # 환경 변수로 API KEY 보안 관리 load_dotenv() NAVER_CLIENT_ID = os.getenv("NAVER_CLIENT_ID") NAVER_CLIENT_SECRET = os.getenv("NAVER_CLIENT_SECRET") 2. 브라우저 내장 개발자 도구(F12)를 통한 내부 API 분석 공개된 API가 없는 경우, 브라우저의 Network 탭(F12)을 활용해 웹페이지 내부에서 주고 받는 API 요청을 역추적(Networking Sniffing) 하는 기법을 익혔다. XHR/Fetch 요청을 분석하여 숨겨진 JSON 데이터 URL을 찾아 직접 요청을 보냄으로써 크롤링 보다 빠른 효율성을 경험 했...

Day004 - 예외처리(Exception), 모듈(Module), 클래스(Class)

이미지
Day004 - 예외처리(Exception), 모듈(Module), 클래스(Class) 오늘은 예외처리(Exception Handling) 및 모듈(Module), 패키지(Package), 그리고 클래스(Class)와 파일 처리(CSV/JSON)를 학습했다. 에러에 대비해 안정적으로 구동되고 데이터를 영속적으로 저장하며 구조화하는 방법에 대해 학습한 내용을 정리해 본다. 1. 예외 처리(Exception Handling) 및 모듈(Module), 패키지(Package) 프로그램 실행 중 발생하는 에러(Error) 로 인해 시스템이 중단되는 현상을 방지하기 위해 try-except 문법을 사용했다. 발생 가능한 예외 형태(ValueError, ZeroDivisonError, FileNotFoundError 등) 를 명확히 지정하여 대처하고, else 와 finally 블록을 활용해 상황별 로직을 분기하는 흐름을 정립했다. 또한 직접 예외를 발생시키는 raise 구문과 모든 예외의 최상위 클래스인 Exception 의 활용법을 학습했다. 예외 처리(try - except - else - finally) 실행 흐름도 더불어 코드의 재사용성을 높이는 모듈(Module)과 패키지(Package) 구조를 습득했다. Python 표준 라이브러리(math, random, datetime) 활용법과 더불어 패키지 폴더 내 __init__.py 의 역할을 이해하고 외부 라이브러리( rich )를 설치하여 터미널 출력을 시각적으로 개선하는 실습도 진행했다. # 예외 처리 및 다중 except 적용 예시 def safe_division(a, b): try: result = a / b except ZeroDivisionError: print("[오류] 0으로 나눌 수 없습니다.") return None except TypeError: print("[오류] 숫자형 데이...

Day003 - 함수와 자료구조

이미지
Day003 - 함수와 자료구조 오늘 학습한 함수(Function), 람다(Lambda), 자료 구조(Data Structures) 그리고 코드의 가독성을 한 단계 올려 주는 컴프리헨션(Comprehension)까지 정리해 본다. 1. 함수(Function) 함수는 반복되는 코드를 재사용 가능하게 만드는 도구다. def 키워드를 사용해 정의하고, 매개변수(Parameter) 로 값을 받아 return 으로 결과를 돌려 받는다. 파이썬 함수 정의와 호출 흐름 - print vs return : print 는 결과를 화면에 보여주기만 하지만, return 은 값을 함수 밖으로 반환하여 재사용 가능한 형태로 만든다. - 다중 반환: return a, b 처럼 여러 개의 값을 한 번에 반환할 수 있으며, 이 반환 값은 튜플(Tuple) 형식을 갖고 있다. - 변수 스코프: 함수 내부에서 선언된 변수는 지역변수 , 외부에서 선언된 변수는 전역 변수(global)  이다. # 함수 정의 및 다중 반환 예시 def min_max(a, b, c): """최솟값과 최댓값을 구하여 튜플로 반환"""[cite: 1] return min(a, b, c), max(a, b, c)[cite: 1] smallest, largest = min_max(7, 2, 9)[cite: 1] print(f"최소: {smallest}, 최대: {largest}")[cite: 1] 2. 자료구조(Data Structures) 데이터의 특성에 맞춰 올바른 구조(자료구조)를 선택하는 법을 학습한다. 자료 구조 비교 요약 (1) 리스트(List) & 튜플(Tuple) - 리스트 [ ] : 순서가 존재하며, 요소를 변경 & 수정할 수 있는 가변(Mutable) 구조이다. - 튜플 ( ) : 순서는 있지만, 한 번 생성되면 수정이 불가능 한 불변(Immutable) 구조이다. (2) 딕셔너리(Dic...

Day002 - 변수 및 제어문

이미지
 Day001 - 변수 및 제어문 1. 나를 소개합니다. 이름, 나이, 취미를 각각 변수에 담고, f-string 한 줄로 소개 문장을 출력하라. (1) 요구사항 - 변수 3개 : name (문자열), age (정수), hobby (문자열) - f-string 으로 한 줄 출력 (2) 예시 저는 김파이이고, 25살이며, 취미는 등산입니다. (3) 코딩/결과 코딩/결과 2. 두 수의 사칙연산 두 정수를 입력 받아 덧셈, 뺄셈, 곱셈, 나눗셈 결과를 각각 한 줄씩 출력하라. (1)요구사항 - int(input()) 으로 두 수 a , b 입력 - a+b , a-b , a*b , a/b 를 각각 출력 (2) 예시 첫 번째 수: 10 두 번째 수: 3 10 + 3 = 13 10 - 3 = 7 10 * 3 = 30 10 / 3 = 3.3333333333333335 (3) 코딩/결과 코딩/결과 3. 섭씨 → 화씨 변환기 섭씨 온도를 입력 받아 화씨로 변환해 출력하라. 공식 : 화씨 = 섭씨 x 9 / 5 + 32 (1) 예시 섭씨 온도: 25 섭씨 25도는 화씨 77.0도 입니다. (2) 코딩/결과 코딩/결과 4. 짝수∙홀수 판별기 정수를 입력 받아 짝수인지, 홀수인지 판별하라. (1) 예시 숫자: 7 7은(는) 홀수 입니다. (2) 코딩/결과 코딩/결과 5. 놀이공원 요금 안내 나이에 따라 입장료가 다르다. 나이를 입력 받아 구분과 요금을 출력하라. 요금 안내 (1) 예시 나이: 15 청소년: 20,000원 나이: 5 미취학: 무료 (2) 코딩/결과 코딩/결과 6. 세 수 중 최댓값 세 개의 수 a , b , c 가 아래처럼 미리 주어진다. max() 함수 없이 if   문만으로 가장 큰 값을 찾아 변수 result 에 저장하라. a = 17 b = 42 c = 33 (1) 요구사항 - result 에 세 수 중 가장 큰 값을 담는다.( if 만 사용) - print(result) 로 확인 (2) 코딩/결과 코딩/결과 7. 1부터 100까지의 ...