데이터 분석 TIL - split, join, 클래스, 불리언 인덱싱, 데코레이션

테리·2025년 10월 30일

1. 학습 키워드

split, join, 클래스, 불리언 인덱싱, 데코레이션

2. 학습 내용

split

  • .split(): 문자열 공백을 기준으로 나누고 리스트로 반환

  • .split('/'): / 를 기준으로 나누로 리스트로 반환

  • .rsplit('/', 1): 오른쪽에서 1번째 / 를 기준으로 나눔.

  • .join(리스트): 리스트 내용을 이어 붙임

    ex)

    words = ['Hello,', 'how', 'are', 'you', 'doing', 'today?']
    sentence = ' '.join(words)
    print(sentence)  # 출력: Hello, how are you doing today?
    
    특정 구분자를 사용하여 결합
    fruits = ['apple', 'banana', 'grape', 'orange']
    data = ','.join(fruits)
    print(data)  # 출력: apple,banana,grape,orange
  • .strip(): 문자열 양 끝의 공백을 제거

클래스(class)

클래스의 기본 구조

  • __init__ 메서드: 클래스 생성할 때 항상 초기값을 설정해야함.
  • 클래스 내부의 메서드들은 클래스의 동작을 정의하는 함수
  • 메서드의 첫 번째 매개변수로 self를 반드시 사용
class ClassName:
    def __init__(self, parameter1, parameter2):
        self.attribute1 = parameter1
        self.attribute2 = parameter2

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

클래스와 객체(Object)의 관계

  • 클래스는 객체를 만들기 위한 틀 또는 설계도

person1 이라는 객체는 person이라는 클래스를 사용해서 만든거임.

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

# 객체 생성
person1 = Person("Alice", 30)
person2 = Person("Bob", 25)

다형성(Polymorphism)

다형성은 같은 이름의 메서드가 서로 다른 클래스에서 다른 기능을 수행하도록 하는 개념입니다.

sound()라는 함수가 서로 다른 클래스에서 다른 기능을 수행함.

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()

클래스와 함수의 차이점

  • 클래스와 함수 모두 파이썬에서 재사용성을 높이는 데 사용됨.

함수

  • 함수는 일련의 작업을 수행하는 블록.

클래스

  • 클래스는 데이터와 해당 데이터를 처리하는 메서드(함수)를 함께 묶어놓은 것
  • 객체의 상태(속성)와 행위(메서드)를 정의 하여 객체를 생성함.

클래스의 속성과 매서드

메서드(Method)

  • 클래스에 속한 함수
  • 메서드는 일반적으로 클래스의 인스턴스(instance)에서 호출되며, 해당 인스턴스의 상태에 따라 동작함.
  • 일반적으로 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의 엔진을 가동합니다.

속성(Attribute)

  • 클래스나 클래스의 인스턴스에 속한 변수
  • 객체의 데이터를 저장
class Dog:

    def __init__(self, name):
        self.name = name  # 인스턴스 속성

# Dog 클래스의 인스턴스 생성
my_dog = Dog("Buddy")
print(my_dog.name)      # 출력: Buddy

불리언 인덱싱

import numpy as np

# 배열 생성
arr = np.array([1, 2, 3, 4, 5])

# 불리언 배열 생성 (조건에 따라 True 또는 False 값을 갖는 배열)
condition = np.array([True, False, True, False, True])

# 불리언 인덱싱을 사용하여 조건에 맞는 요소 선택
result = arr[condition]

# 결과 출력
print("Result using boolean indexing:", result)  # 출력: [1 3 5]

# 불리언 인덱싱을 사용하여 배열에서 짝수인 요소만 선택
evens = arr[arr % 2 == 0]

# 결과 출력
print("Even numbers using boolean indexing:", evens)  # 출력: [2 4]

데코레이션

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

ex) 기존의 say_hello() 라는 함수에 @my_decorator 라는 데코레이터를 입힘.

def my_decorator(func):
    def wrapper():
        print("원하는 기능. 메시지 출력!")
        func()
        print("원하는 기능. 메시지 출력!")
    return wrapper

@my_decorator
def say_hello():
    print("Hello!")

say_hello()

파이썬 에러

Traceback (most recent call last):
    File "codeit.py", line 12, in <module> # 어떤 파일에서 몇번째 줄에 에러가 떴는지를 알려줌
    numbers[right] = temp[left] # 어떤 코드가 잘못 되었는지를 알려줌
TypeError: 'int' object is not subscriptable  # 에러의 종류 : 에러에 대한 세부 정보
  • 'int' object is not subscriptable: 정수형을 인덱싱 하려고 해서 오류 발생.
  • SyntaxError (구문 오류): 코드 문법 오류
  • IndentationError: 들여쓰기 오류
  • NameError: 정의되지 않은 변수나 함수를 사용하려고 할 때
  • TypeError (타입 오류): 데이터 타입이 일치하지 않을 때
  • IndexError: 인덱스 오류
  • KeyError: 딕셔너리에서 존재하지 않는 키를 사용하려고 할 때
  • FileNotFoundError: 파일을 찾을 수 없을 때

3. 배운점

  1. 일단 클래스는 용어 자체가 너무 입에 달라붙지도 않고 익숙하지 않아서 텍스트 설명으로는 이해가 잘 안된다.
  2. ','.join()을 은근 자주 사용하게 되는데 왜이렇게 익숙해 지지 않는건지.. 매번 사용법을 찾아보게 된다.
  3. 불리언 인덱싱은 생각도 안하고 있었는데 잘만 활용 한다면 유용하게 사용할 수 있을 것 같다.
  4. 데코레이션 이라는 기능을 처음 알게됨. 얼마나 자주 사용하는지는 모르겠지만 지금까지 본적은 없었지만 텐서플로우에서 조금 더 빠른 연산을 위해서 종종 사용한다고 한다.

0개의 댓글