오늘 아침에 sql, 알고리즘 코드카타 문제를 풀면서
몰랐던 sql 문법에 관한 내용이 있어서 구글링 하여 TIL을 추가로 작성했다.
2024.07.11 - [데이터분석 study/SQL] - TIL_24.07.11_join 과 using
TIL_24.07.11_join 과 using
오늘 아침에 SQL 과 알고리즘 문제를 푸는데 self join과 using에 대해서 모르는 부분들이 있어서 구글링을 해보았다. self join 은 서로 같은 테이블끼리 join 하여 사용하는 것인데join을 반드시 테이
justdata.tistory.com
▶ 클래스
- 파이썬 클래스(class)는 객체 지향 프로그래밍(OOP)의 중요한 개념 중 하나이다.
- 객체 지향 프로그래밍을 통해 코드의 재사용성과 유지보수성을 향상 시킬 수 있다.
● 클래스의 기본 구조
class ClassName:
def __init__(self, parameter1, parameter2):
self.attribute1 = parameter1
self.attribute2 = parameter2
def method1(self, parameter1, parameter2):
# 메서드 내용 작성
pass
**여기서 _init_메서드는 클래스의 생성자로, 객체가 생성될 때 호출되며 초기화 작업을 수행
** 클래스 내부의 메서드들은 클래스의 동작을 정의하는 함수
** 메서드의 첫 번째 매개변수로 self를 반드시 사용해야 함,
이는 해당 메서드가 속한 객체를 가리킨다.
● 클래스와 객체 (object)의 관계
- 클래스는 객체를 만들기 위한 틀 또는 설계도, 객체는 이러한 클래스를 이용하여 생성
- 예를 들어, person 클래스를 정의하면 이 클래스를 사용하여 여러 사람 객체를 만들
수 있다.
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
# 객체 생성
person1 = Person("Alice", 30)
person2 = Person("Bob", 25)
● 다형성(Polymorphism)
- 다형성은 같은 이름의 메서드가 서로 다른 클래스에서 다른 기능을 수행하도록 하는 개념
class Animal:
def sound(self):
print("Some generic sound")
class Dog(Animal):
def sound(self):
print("Woof")
class Cat(Animal):
def sound(self):
print("Meow")
# 다형성 활용
animals = [Dog(), Cat()]
for animal in animals:
animal.sound()
- 위 코드에서 Animal 클래스의 sound 메서드를 각각의 하위 클래스인 Dog와 Cat에서
재정의하여 다른 동작을 수행.
● 클래스와 함수의 차이점
- 함수(Function)
- 함수는 일련의 작업을 수행하는 블록
- 일반적으로 입력(매개변수)을 받아들이고 그에 따른 결과물 반환
- 함수는 클래스와 상관없이 독립적으로 정의될 수 있음
- 클래스(class)
- 클래스는 데이터와 해당 데이터를 처리하는 메서드(함수)를 함께 묶어놓은 것
- 객체 지향 프로그래밍의 핵심 개념으로 , 데이터와 데이터를 다루는 코드를 함께
묶어 객체를 생성할 수 있게 함.
- 객체의 상태(속성) 과 행위(메서드)를 정의하고 이를 캡슐화하여
객체를 생성하고 다룰 수 있게 한다.
● 클래스의 속성과 메서드
- 클래스는 객체를 생성하기 위한 템플릿, 메서드와 속성(Attribute)을 가질수 있다.
- 메서드와 속성은 클래스의 행동과 상태를 정의하는 데 사용된다.
○메서드
- 클래스 내부에 정의된 함수
- 메서드는 클래스에 속한 함수, 특정 작업을 수행하거나 클래스의 상태를 변경
- 메서드는 일반적으로 클래스의 인스턴스에서 호출되며 해당 인스턴스 상태에
따라 동작
- 일반적으로 self 매개변수를 첫 번째 매개변수로 사용하여 메서드가 속한
인스턴스를 참조
예시 코드)
class Car:
def __init__(self, brand):
self.brand = brand
def start_engine(self):
print(f"{self.brand}의 엔진을 가동합니다.")
# Car 클래스의 인스턴스 생성
my_car = Car("Toyota")
# start_engine() 메서드 호출
my_car.start_engine() # 출력: Toyota의 엔진을 가동합니다.
○ 속성
- 클래스나 클래스의 인스턴스에 속한 변수
- 속성은 클래스나 인스턴스의 상태를 나타냄, 즉, 객체의 데이터를 저장
- 각 인스턴스마다 고유값이 가질 수 있는 인스턴스 속성과 클래스에 속한
공유 속성(static attribute)이 있다.
예시 코드)
class Dog:
def __init__(self, name):
self.name = name # 인스턴스 속성
# Dog 클래스의 인스턴스 생성
my_dog = Dog("Buddy")
print(my_dog.name) # 출력: Buddy
● 클래스가 데이터 분석에서 사용되는 예시
○데이터 구조화
- 클래스를 사용하여 데이터를 구조화하고 데이터 타입을 정의
- 예를 들어, 주식 데이터를 다룰 때 각 주식을 객체로 표현하고, 해당 주식의
종목명, 가격, 거래량 등을 속성으로 정의
class Stock:
def __init__(self, symbol, price, volume):
self.symbol = symbol
self.price = price
self.volume = volume
# 객체 생성
stock1 = Stock("AAPL", 150.25, 100000)
stock2 = Stock("GOOG", 2800.75, 50000)
○ 데이터 전처리 모듈화
- 클래스를 사용하여 데이터 전처리 단계를 모듈화하고 재사용 가능한 코드로
만들 수 있다.
- 예를 들어, 데이터 정규화, 결측치 처리, 이상치 제거 등의 작업을 클래스의
메서드로 구현하여 쉽게 사용
raw_data = [1,2,4,5,6,87,2,253654]
class DataPreprocessor:
def __init__(self, data):
self.data = data
def normalize_data(self):
# 데이터 정규화 작업 수행
pass
def handle_missing_values(self):
# 결측치 처리 작업 수행
pass
def remove_outliers(self):
# 이상치 제거 작업 수행
pass
# 데이터 전처리 객체 생성
preprocessor = DataPreprocessor(raw_data)
preprocessor.normalize_data()
preprocessor.handle_missing_values()
preprocessor.remove_outliers()
○ 모델링과 분석작업
- 머신러닝까지 자세한 개념을 아직 배우지 않았지만 아래 코드를 통해서 구현할 수
있다는 것 까지만 참고.
- 예를 들어, 선형 회귀 모델, 분류모델, 군집화 모델 등을 클래스로 정의하여
모델의 학습, 예측, 평가 등을 각각의 메서드로 구현할 수 있다.
class LinearRegressionModel:
def __init__(self, data):
self.data = data
def train(self):
# 선형 회귀 모델 학습
pass
def predict(self, new_data):
# 새로운 데이터에 대한 예측 수행
pass
def evaluate(self):
# 모델 평가 수행
pass
# 선형 회귀 모델 객체 생성
lr_model = LinearRegressionModel(training_data)
lr_model.train()
predictions = lr_model.predict(new_data)
evaluation_result = lr_model.evaluate()
***클래스를 사용하여 데이터를 구조화하고 처리하면 코드의 가독성과
유지보수성을 향상 시킬 수 있고, 모델링 작업을 모듈화하여 코드를
재사용할 수 있다.
'데이터분석 study > Python' 카테고리의 다른 글
TIL_24.07.15_데코레이션 사용하기 (0) | 2024.07.15 |
---|---|
TIL_24.07.12_알면 유용한 파이썬 문법들(불리언 인덱싱) (0) | 2024.07.12 |
TIL_24.07.10_ 알면 유용한 파이썬 문법들2(glob,os,split) (0) | 2024.07.10 |
TIL(Today I Learned) 24.07.09_ 알면 유용한 파이썬 문법들1 (0) | 2024.07.09 |
TIL(Today I Learned) 24.07.09_ 제곱근 구하기 (0) | 2024.07.09 |