SK플래닛 ai활용 데이터엔지니어 과정 2기/파이썬

파이썬 - 개요 (2)

dev-lee 2026. 2. 27. 20:39

어제에 이어 파이썬의 개요에 대해 마저 적어보도록 하겠다.

 

 

타입

  • 정의
    • 데이터를 표현하는(담는, 참조하는) 형식
    • 수치(가격, 온도, 몸무게, ...)
    • 문자열(리뷰, 문장, 프롬프트, ...)
  • 종류
    • 단일 데이터형 -> 데이터 자체 형식 -> 본질적인 값
      • 수치형
        • 정수(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)
          • 중복 데이터 제거
      • 넘파이
        • 수학/ 과학용 라이브러리 + 퓨리에 연산
        • 데이터 분석/머신러닝/딥러닝의 기본(베이스) 패키지
        • 배열(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 상대방 상황에 따라 발생 가능
  • 표현
  • #1. 예외 상황을 책임지고 처리
      try
        ~ (예외상황 발생하는 코드(잠재적))
      except
        ~ (예외처리)
      else
        ~ (정상처리)
      finally
        ~ (뒷처리 : close() 등)
    #2. 예외 상황을 던짐

 

클래스, 객체

  • 객체 지향적 프로그래밍으로 작성해야 한다면 도입
    • 선택적 상황
    • GUI 구현, pyTorch 구성 시 주로 등장
    • LLM 설계에서도 등장
  • 구성(용어)
    • 클래스, 객체
    • 생성자, 소멸자, 인스턴스 변수, 클래스 함수/변수, ...
    • S/W는 클래스 단위로 구성한다
    • S/W 버전 관리 시 유용 -> 상속성 활용 -> 업그레이드 진행

 

객체 지향적 프로그래밍

  • 클래스 단위로 모듈/기능 구성하여 S/W를 작성
  • oop(object orianted program) 특징
    • 상속성, 다형성, 은닉성의 3대 특징 구현

 

 

정규식 처리

  • 복잡한 패턴의 데이터에 대한 전처리/정제 방법
    • 주 데이터는 문자열을 대상으로 함