데이터

제로베이스 데이터사이언스 스쿨 - Part 01. 데이터 분석을 위한 Python_Chapter 01-6

Leah (리아) 2025. 9. 20. 15:58
반응형

 Chapter 01. 데이터 분석가에게 꼭 필요한 기초 문법

 

클래스 기초

클래스

클래스는 객체를 만들기 위한 틀이고, 객체는 클래스로부터 만든 자료형

 

• type 함수는 객체의 타입을 확인하기 위한 함수로, 어느 클래스로부터 나왔는지 알려줌
• 예를 들어, int 자료형은 int 클래스에서 만들어진 객체로 이들은 같은 틀에서 나왔으므로 서로 유사한 성질이 있음.

• 데이터 분석에 자주 사용되는 객체를 이해하는데 주로 필요
• 모델링을 할 때는 모델을 만드는 틀을 만들어서 모델 객체를 만들때 클래스를 활용

 

모델클래스

1.학습 기능 2. 예측 기능 3. 모델 속성  ---> 모델 객체

 

클래스가 필요한 이유: 모델 예시

y = ax + b라는 단순한 모델을 만들때도 클래스 사용 유무에 따라 효율 차이가 난다.

 

* 클래스 미사용시 : a,b 학습 함수 🡪 매 데이터마다 a,b 추정 🡪 a, b를 바탕으로 y를 예측하는 함수 🡪 매 예측 때마다 a,b를 이용하여 함수 활용 // 모델에 새 기능을 추가해야 한다면 🡪 코드 전체 재설계 필요

* 클래스 사용시 : 클래스 (학습, 예측 기능 포함) 🡪 모델 객체 🡪 모델의 메서드를 이용하여 학습/예측 수행 (모델만 저장하면 됨) // 모델에 새 기능을 추가해야 한다면 🡪 클래스에 함수 추가

 

생성자, 속성, 메서드

생성자 (constructor)

생성자는 객체가 생성될 때 자동으로 호출되는 메서드로 객체의 초기 상태를 설정.

 

• 생성자는 __init__() 메서드로 정의됩니다.
• 첫 번째 매개변수는 항상 self이며, 이는 생성된 객체를 나타냅니다.

class Person:
def __init__(self, name, age):
self.name = name # 이름 속성 초기화
self.age = age # 나이 속성 초기화
# 객체 생성 시 생성자 호출
person1 = Person("홍길동", 32) # self가 person1을 나타냄

 

 

속성 (attribute)

속성은 객체가 가지는 특성을 나타낸다.

.

• 클래스 내부에서 self.속성명으로 정의하며, 각 객체는 고유한 속성을 가질 수 있습니다.
• 생성자에서 사용자가 입력한 값을 바탕으로 정의하기도 하고, 어떤 계산을 통해 얻어진 값을
바탕으로 정의하기도 합니다.

class Person:
def __init__(self, name, age):
self.name = name # 이름 속성 초기화
self.age = age # 나이 속성 초기화
person1 = Person("홍길동", 32)
print(person1.name) # 홍길동
print(person1.age) # 32

 

메서드 (method)

메서드는 객체가 수행할 수 있는 동작(기능)을 정의하는 클래스 내부 함수

class Calculator:
def __init__(self, value):
self.value = value # 초기 값 설정
def add(self, num):
self.value += num # 값 더하기 (x += v는 x = x + v와 같음)
return self.value
def subtract(self, num):
self.value -= num # 값 빼기
return self.value
calc = Calculator(10)
print(calc.add(5)) # 출력: 15
print(calc.subtract(3)) # 출력: 12

 

 

* 이 글은 제로베이스 데이터사이언스 파트타임 스쿨의 강의 자료 일부를 발췌하여 작성되었습니다.


생각정리

클래스는 단순히 문법 요소가 아니라, 현실 세계의 개념을 코드로 모델링하는 강력한 도구라고 느꼈다. 특히 함수와 변수를 한 객체 안에 묶어 관리할 수 있기 때문에, 코드의 구조화와 재사용성이 크게 향상된다. 단순한 함수 집합으로만 프로그램을 구성하면 기능이 늘어날수록 관리가 복잡해지지만, 클래스를 활용하면 객체 단위로 관리할 수 있어 유지보수가 훨씬 용이하다는 점이 인상 깊었다. 또한 데이터 분석이나 머신러닝에서 모델을 객체로 다루는 방식은, “모델 = 속성과 메서드를 가진 클래스”라는 사고방식을 익히는 데 큰 도움이 될 것 같다.

 

적용점

 

  • 개인 프로젝트
    • 간단한 계산기, 학생 관리 시스템 등을 클래스로 구현하여, 속성(예: 이름, 점수)과 메서드(예: 평균 계산)를 묶어 관리한다.
  • 데이터 분석
    • 머신러닝 모델처럼 학습(fit), 예측(predict), 평가(score) 기능을 가진 클래스를 직접 구현해봄으로써 라이브러리 내부 동작을 더 잘 이해한다.
  • 코드 확장성
    • 기능 추가가 필요할 때 새로운 메서드를 추가하는 방식으로 확장하여, 코드 전체를 다시 작성하지 않고도 관리할 수 있도록 한다.
  • 실습 아이디어
    • Book 클래스를 정의해 제목, 저자 속성을 갖고, get_info() 메서드로 책 정보를 출력하도록 만들기.
    • BankAccount 클래스를 만들어 입금, 출금, 잔액 조회 기능을 구현해보기.

 

반응형