내일배움캠프(QC,QA_5기)

[내일배움캠프_QA/QC 5기] 12일차 _ 파이썬 5강

qc-standard 2026. 3. 24. 21:53

2026/03/24 Tue.


⊙ 파이썬 5강

파일 불러오기 

● 파일 확장자

    : CSV (.csv) - Comma Sparated Values 약자로 데이터를 쉼표로 구분

    : Excel 파일 (.xls .xlsx)

    : JSON (.json) - Java Script Object Notatio 약자

    : 텍스트 파일(.txt .dat 등)

pandas 라이브러리에서 불러오면 쉬움

    : import pandas as pd

      df = pd. read_csv('file_csv')

          = pd. read_excel('file_xlsx')

 

패키지(라이브러리) 사용하기 

패키지는 관련된 여러 개의 모듈(함수)을 포함하는 디렉토리

ex) numpy 와 matplotlib은 여러 모듈을 포함하는 패키지

 패키지는 데이터 분석을 위한 다양한 작업 수행에 필수 → 데이터 수집, 전처리, 시각화, 모델링, 통계분석 등 여러 기능 제공 

 패키지 맨 처음 사용할 패키지를 한번에 불러놓고 사용하면 편리 → 패키지를 추가했는데 확인할 필요 없음 

 패키지 종류

pandas numpy matplotlib seaborn scikit-learn statsmodels scipy tensorflow pytorch
- 데이터 조작, 분석에 용이 - 과학적 계산에 용이

- 다차원 행렬 연산
(열이 많은 데이터 = 다차원 행렬)
- 데이터 시각화 - 시각화 패키지

- matplotlib보다 시각적으로 예쁨 
- 머신러닝 다룰 때 많이 사용

- 통계 분석 - 수학, 공학 계산  - 딥러닝 패키지로 유명

- 구글에서 만든 코드
- 딥러닝 패키지로 유명

- Meta(구 페북)에서 만든 코드 
    - pyplot을 as를 사용해 plt로 축약해서 사용      - 자주 사용하지는 않음    

 


포맷팅(formatting) 

print 함수와 비슷

변수와 문자를 다양하게 출력해야하는 상황에 용이 

 

기존 print 함수는 " " 쓰고 ,콤마로 구분

포맷팅은 변수에 {}중괄호를 써서 사용

    → 콤마로 구분 하지 않아도 됨 

앞에 f를 써서 formatting사용을 알려줌? : f-string 방법 

 

 

 

 예시

 

 

 

 

 

 

 

 

 

 

 

    : 결과값에 설명을 더한 풍부한 결과값을 도출할 수 있음 

 


리스트 캄프리헨션 

리스트 : 여러 개의 값을 담는 데이터 타입 - 값을 하나씩 넣고 콤마로 구분 

리스트의 내용을 한번에 채울 수 있는 방법

반복문과 조건문 사용하여 생성

[표현식 for 항목 in iterable if 조건문]

 

 예시

    : (오른쪽 - 리스트 캄프리헨션) x에 들어가는 값을 다 제곱을 하겠다
    : (오른쪽 - 리스트 캄프리헨션) 1~10까지 차례로 x라는 변수에 담기는데,,, x에서 제곱을 한 값이 담긴다
    : (오른쪽 - 리스트 캄프리헨션) 총 10개의 제곱한 값이 담기게 된다
    : (왼쪽 - 반복문 사용) 빈 리스트를 만들어 담아야 함 
 
 
 

# 예시: 리스트에서 짝수만 선택하여 제곱한 리스트 생성
# 2의 배수라는 조건이 생김
 

# 예시: 문자열 리스트에서 각 문자열의 길이를 저장한 리스트 생성
# word에서 글자를 하나씩 가져오고 len 함수 사용 - 단어의 길이가 저장


 

# 예시: 리스트 컴프리헨션을 중첩하여 2차원 리스트 생성
# i 리스트는 1~3 → 이 리스트를 3번 반복하는 j

 

 


lambda 

임시로 지정한 함수

기존 함수보다 간결한 함수 → 편리

일반 함수는 여러줄의 코드 블록인 반면 람다는 한줄의 코드 블록

데이터 분석할 때 용이

모든 상황에서 lambda를 사용할 수 없음 

 예시

#add라는 변수에 무언가를 담을 건데

#lambda라는 함수를 만들어 줌

#x,y는 매개변수 - 함수 내에서 사용하는 변수

#콜론 다음에 수식을 쓰면 됌

#함수

#x_y_cal 함수 이름 / 매개변수 x,y

 

 

 

리스트의 요소 필터링

filter(조건 함수, 반복 가능한 데이터)
filter?
(필터라는 내장함수) 여러 개의 데이터로부터 조건을 충족하는 데이터만 추출할 때 사용하는 함수

 

#lambda 함수 - 짝수인 경우가 조건으로 들어가 있음

 

 

 

리스트 각 요소에 제곱

map(함수, 반복 가능한 데이터)
map?
(맵이라는 내장함수) 여러개의 값을 받아서 각각의 값에 함수를 적용한 결과를 반환한 내장함수

 

#각 값을 lambda에 적힌대로 표현
#filter()는 조건에 따라 추출
#map()은 함수대로 만들어 주는거

 

 


glob

파일 시스템에서 파일을 찾을 때 사용되는 유용한 도구

import glob

# 현재 경로의 모든 파일을 찾기
# * - 모든을 뜻함
file_list1 = glob.glob('*')

# 단일 파일 패턴으로 파일을 찾기
file_list2 = glob.glob('drive')

# 디렉토리 안의 모든 파일 찾기
file_list3 = glob.glob('sample_data/*')

# 특정 확장자를 가진 파일만 찾기
file_list4 = glob.glob('sample_data/*.csv')

 


os

운영체제와 관련된 함수

    → 폴더 생성, 삭제, 파일 실행, 삭제 등 

#현재 작업 디렉토리 가져오기
import os
cwd = os.getcwd()
print(cwd)

#디렉토리 생성
import os
os.mkdir('sample_data/new_directory')

#파일 이름 변경
import os
os.rename('sample_data/new_directory', 'sample_data/new_directory2')

#파일 삭제
import os
os.remove(file_adress)

import os
os.remove('sample_data/data.csv')


#파일 경로 가져오기
import os
files = os.listdir('/content')
print(files)

#경로 조작
import os
path = os.path.join('/content', 'sample_data', 'mnist_test.csv')
print(path)

 


split

경로 다룰 때 많이 사용 - 파일(경로) 다룰 때 사용 

문자열을 여러개로 쪼개는데 유용 →  문자열로 되어 있는 파일 경로로 부터 파일 제목을 추출하는 등의 상황에서 사용 

rsplit() - 함수를 사용하여 오른쪽에서 몇 번째 문자까지 구분 할 것이냐 

폴더 경로, 파일 제목을 명확하게 구분 가능 


클래스

객체 지향 프로그래밍 (OOP)의 중요한 개념 중 하나

객체 지향 프로그래밍 : 현실 세계의 사물을 모델링핳여 프로그래밍하는 방법

  → 사람이 쓰기 편한 프로그래밍

  → 코드의 재사용성 과 유지 보수성을 향상시킬 수 있는 

다양한 함수를 묶는 역할? 

클래스 내에서 사용하는 함수 : 메서드

class ClassName:
      def __init__(self, parameter1, parameter2):
             self.attribute1 = parameter1
              self.attribute2 = parameter2
# ↑ 초기값을 설정하는 메서드로 반드시 써야함
# 매개 변수 처음에 self를 무조건 적어야함
# 매개 변수를 self. attribute라는 클래스 내에서 사용하게 될 변수에 담아준 것

def method1(self, parameter1, parameter2):
# 메서드 내용 작성
               pass

 

 

클래스와 객체의 관계
   : 클래스는 객체를 만들기 위한 틀 또는 설계도 

class Person:
     def __init__(self, name, age):
              self.name = name
              self.age = age
# name / age를 self에 담기게 한 초기값을 설정하는 클래스


# 객체 생성
# 클래스 이름(Person)을 사용해서 어떠한 변수(person 1)에 담으면 클래스를 사용하는 객체 
person1 = Person("Alice", 30)
person2 = Person("Bob", 25)
# 하나의 클래스 뼈대에 다양한 상황에 맞게 클래스를 객체로 사용할 수 있음

 

● 다형성
    함수 : 동일한 이름 X
    클래스 : 동일한 이름 O - 클래스 이름을 다르게 하면 됨 

  함수 클래스
공통점 파이썬에서 코드를 조직화하고 재사용성을 높이는데 사용 
차이점   - 데이터와 해당 데이터를 처리하는 메서드(함수)를 함께 묶어 놓은 것 = 캡슐화
 → 조직화, 재사용성이 효과

 

메서드 : 클래스 내부에 정의된 함수

   속성 : 클래스나 클래스의 인스턴스에 속한 변수 

●데이터 구조화 / 데이터 타입 정의 / 데이터 전처리 모듈화 할 때 사용 

 


불리언 인덱싱(Boolean Indexing)

조건에 따라 요소(값)를 선택하는 방법 중 하나 

Pandas에서 특정 조건에 따라 데이터를 선택하는 경우 : 불리언 인덱싱 사용 

 

 

인덱싱 - 해당 인덱스 값만 가져옴
    []대괄호에 조건을 넣으면 조건에 해당하는 값을 가져옴 

 


데코레이션 

기존의 함수를 따로 수정하지 않고도 추가 기능을 넣고 싶을 때 사용

 

예시 

 : say hello라는 함수를 수정하지 않았음에도

 : 데코레이션을 이용해 say hello 위, 아래 또 다른 함수를 추가 했음 

 

딥러닝 라이브러리 - 텐서플로우의 @tf.runction이라는 데코레이션 
    : 텐서플로우 내에서 수행되는 연산을 빨리 수행할 수 있음

    : 항상 좋은 성능을 내지는 않음 

 


파이썬 에러 대처법

● 에러 확인하는 법

 

 

 

 

 

 

    : TypeError라는 에러 종류를 알려줌 - 데이터 타입이 잘못되었음 
    : 'int' object iis not subscriptable
    : '정수형 인덱싱 하려고 할 때 뜨는 에러' - 정수형은 인덱싱할 수 없는데 인덱싱하려고 할 때 

 

SyntaxError (구문 오류)
    :
기본적 문법 - 괄호, 따옴표, 콜론 등을 갇추지 않았을 때 

 IndentationError (들여쓰기 오류)
    :
코드 블록의 들여쓰기가 잘못 되었을 때

 NameError (이름 오류)
    :
정의되지 않은 변수나 함수를 사용하려고 할 때

 TypeError (타입 오류)
    :
데이터 타입이 일치하지 않는 연산이나 함수 호출을 시도할 때
    : 문자+문자 가능 / 숫자+숫자 가능 / 문자+숫자 불가

 IndexError (인덱스 오류)
    :
리스트나 튜플에서 존재하지 않는 인덱스를 접근하려고 할 때
    : ex) 리스트에 인덱스가 3번까지 밖에 없는데 4번에 접근하려고 할 때 

 KeyError (키 오류)
    :
딕셔너리에서 존재하지 않는 키를 사용하려고 할 때

FileNotFoundError (파일을 찾을 수 없음 오류)
    :
파일을 찾을 수 없을 때