어제에 이어 파이썬의 개요에 대해 마저 적어보도록 하겠다.
타입
- 정의
- 데이터를 표현하는(담는, 참조하는) 형식
- 수치(가격, 온도, 몸무게, ...)
- 문자열(리뷰, 문장, 프롬프트, ...)
- 종류
- 단일 데이터형 -> 데이터 자체 형식 -> 본질적인 값
- 수치형
- 정수(int) : -1, 0, 1, ... => 이산형, 순서형
- 부동소수(float) : 3.14, ... => 연속형
- 복소수
- 문자형
- "hello", "안녕" => 자연어(텍스트) => 범주형 > 명목형
- 모델학습을 시킨다 : 문자열을 수치화해야함.(Tokenizer 필요 => 분전화 -> 벡터화 -> 사전화 -> 패딩 -> 임베딩 순으로 진행하여 수치화 진행.)
- 집계, 그룹화, 피벗 등의 대상이 됨.
- Boolean형
- True / False : 1/0
- 바이너리, 이진
- 바이트형
- 순수 바이너리 데이터(압축)
- 특별한 일이 없으면 보이지 않을 것임.
- 수치형
- 컬렉션(1개 이상)
- 파이썬
- 문자열(str)
- 단일 데이터형이면서 연속 데이터형임.
- 수정 불가능.
- 리스트(list)
- 순서 존재 -> 순서표기 : 인덱스(고유값) -> 정방향(0, 1, 2,...)/역방향(-1, -2,...) 리스트가 가지고 있는 데이터는 인덱스를 통해서 접근함.
- 딕셔너리(dict)
- 순서가 없음. -> 데이터는 키(key, 고유값)로 특정. -> 키를 통해서만 데이터 접근 가능(통상 문자열, 수치로 키를 사용함.)
- 데이터 포멧 중 JSON과 호환. (객체 직렬화(dict -> 문자열), 역직렬화(문자열 -> dict) => 통신할 때 등장)
- 튜플(tuple)
- 순서 존재 -> 리스트와 거의 동일, 읽기 전용(수정 불가능. immutable)
- 단순하게 값을 묶을 때 사용
- 집합(set)
- 중복 데이터 제거
- 문자열(str)
- 넘파이
- 수학/ 과학용 라이브러리 + 퓨리에 연산
- 데이터 분석/머신러닝/딥러닝의 기본(베이스) 패키지
- 배열(ndarray)
- 넘파이의 기본 자료구조
- 행렬연산이 기본임.
- 판다스(소규모 데이터)
- 데이터 분석용 패키지/EDA, 시각화/피처엔지니어링/데이터전처리/ETL
- 시리즈(Series)
- 1차원 데이터 -> 벡터 -> 자연어 처리(문장 기본 변환 단위)
- 데이터프레임(DataFrame)
- 2차원 데이터 -> 매트릭스
- 딥러닝(파이토치(오픈소스), 텐서플로우 : 엔진/프레임워크)
- 모델 구축
- 알고리즘 -> 머신러닝
- 인공신경망 -> 딥러닝/LLM/생성형모델
- 텐서(Tensor) : 엔진기반
- 모델 구축
- 폴라스 (중규모 데이터)
- 데이터 분석용 패키지
- 파이스파크 (대용량 데이터)
- 데이터 분석용 패키지
- 파이썬
- 기타
- 값이 없다 => 데이터 관점에서는 결측치
- 파이썬 : None
- 넘파이 : NaN
- 값이 없다 => 데이터 관점에서는 결측치
- 단일 데이터형 -> 데이터 자체 형식 -> 본질적인 값
파이썬 타입 계층 구조
- None
- 값이 없음
- 수치
- 정수 : 정수형, 불린형
- 실수 : 부동소수, 복소수
- 시퀀스
- 가변형 : list
- 불변형 : tuple, str, byte
- 집합
- set
- 매핑
- dict
흐름제어
- 목적
- 프로그램 흐름 컨트롤 -> 특정 목적 달성
- 분류
- 조건문
- if, else, elif, end
- 반복문
- while : 0 ~ 무한대
- for : 지정된 횟수 반복
- 컨트롤 키워드
- continue -> 아래 코드 생략, 조건문으로 점프
- break -> 반복문 탈출
- else -> 반복문/예외처리에서 정상적으로 완료되면 진입함.
- 조건문
- 연산자 기호
#코드 삽입
- 산술 : +, -, *, /, %, //, ...
- 비교 : >, <, <=, >=, !=, ==, ...
- 논리 : and, or, not, ...
절차적 프로그래밍
- 타입, 변수, 흐름제어 등을 이용하여 프로그램 개발
- 목적
- 흐름 제어 연습
- 로직 구성 연습
- 파이썬에 익숙해지는 연습
- 간단한 게임을 통해서 연습 -> 절차적 사고/ 구현 연습 가능
함수
- 목표
- 프로그램 효율적으로 작성, 관리 -> 생산성 향상 -> 재사용성 높임 -> 기업 관점 비용 절감
- 종류
- 내장함수
- 파이썬이 설치되면 바로 사용 가능(기본 라이브러리)
- 외장함수
- 특정 패키지를 설치하면 패키지를 통해 접근 가능(도트 연산자(.)가 잘 보임)
- 내장함수와 구분하는 용도의 명칭
- 사용자 정의 함수
- 필요에 의해 개발자에 의해 생성(문법 이해 필요)
- 고급함수
- 람다(가장 빠름)
- 제너레이터 적용
- 클로저/내부함수 -> 데코레이터(웹프로그램에서 자주 등장함)
- 내장함수
함수 지향적 프로그래밍
- 절차적 코드 => 함수 지향적 코드로 마이그레이션(코드 리펙토링 수행)
- 적절한 배분이 중요
- 특징
# 엔트리 포인트(코드의 진입로(시작점) 표시)
# 코드의 가장 마지막 줄에 위치함
if __name__ == '__main__'
#시작 함수/코드 작성
모듈 및 패키지
- 목적
- 모듈이 없다면 => 1개의 파일(*.py)에 모든 코드가 담겨 있어야함 => 가독성 떨어짐/유지보수 난이도 상승 => 코드 재사용성 한계 => 해결 => 코드를 기능별로 쪼개서 관리(모듈화) => 분업 가능/코드 재사용성 상승 => 어떻게 합쳐서 사용하지? (모듈 가져오기)
- 모듈화
- 기능별, 업무별등 목적에 따라 별도 파일로 관리
- 구성
- 모듈 : *.py (파이썬 파일)
- 패키지 : 특정 디렉토리에 모듈(파일)들이 모여있는 형태 -> 기능별로 모듈을 모아둠
- 수학/과학용 기능을 구현해서 만든 패키지 => 넘파일, 사이파이, ...
- 모듈 가져오기
- import ~
from ~ import ~
예외처리
- 목적
- s/w는 구동 시 셧다운 되면 안됨.
- 잠재적 버그를 방어(예방) -> 상황발생 -> 로깅/예외처리 -> 정상적으로 다음 단계로 전환
- 잠재적 발생 요인
- I/O를 사용하는 코드
- 데이터베이스 연동, 파일 액세스, 통신 중, ...
- 데이터나 I/O 상대방 상황에 따라 발생 가능
- I/O를 사용하는 코드
- 표현
- #1. 예외 상황을 책임지고 처리
try
~ (예외상황 발생하는 코드(잠재적))
except
~ (예외처리)
else
~ (정상처리)
finally
~ (뒷처리 : close() 등)
#2. 예외 상황을 던짐
클래스, 객체
- 객체 지향적 프로그래밍으로 작성해야 한다면 도입
- 선택적 상황
- GUI 구현, pyTorch 구성 시 주로 등장
- LLM 설계에서도 등장
- 구성(용어)
- 클래스, 객체
- 생성자, 소멸자, 인스턴스 변수, 클래스 함수/변수, ...
- S/W는 클래스 단위로 구성한다
- S/W 버전 관리 시 유용 -> 상속성 활용 -> 업그레이드 진행
객체 지향적 프로그래밍
- 클래스 단위로 모듈/기능 구성하여 S/W를 작성
- oop(object orianted program) 특징
- 상속성, 다형성, 은닉성의 3대 특징 구현
정규식 처리
- 복잡한 패턴의 데이터에 대한 전처리/정제 방법
- 주 데이터는 문자열을 대상으로 함
'SK플래닛 ai활용 데이터엔지니어 과정 2기 > 파이썬' 카테고리의 다른 글
| 파이썬 - 흐름제어(1) (0) | 2026.03.04 |
|---|---|
| 파이썬-문법공통_타입(3) (0) | 2026.03.03 |
| 파이썬 - 문법공통_문법(2) (0) | 2026.03.03 |
| 파이썬 - 문법공통_타입(1) (0) | 2026.02.27 |
| 파이썬 - 개요(1) (0) | 2026.02.27 |