AI 부트캠프/챕터2(10.14~11.08)

TIL 21

musukie 2024. 10. 24. 17:54

강의 외부에서 추가로 알게 된 내용

lambda 함수

lambda 함수는 간단한 함수 정의를 위해 사용되는 구문이다. 일반적으로 작은 기능을 수행하는 간단한 함수를 한 줄로 작성할 수 있게 해준다. 구조는  lambda 인수들: 표현식 이다. 이름이 없기 때문에 '익명 함수'라고도 불리며, 보통 다른 함수에 인자로 넘기거나, 간단한 연산을 위해 사용된다.

# 예시1) 어떤 수의 제곱을 구하는 lambda 함수
square = lambda x: x ** 2
print(square(5))  # 출력: 25

# 예시2) 두 수의 합을 구하는 lambda 함수
add = lambda x, y: x + y
result = add(3, 5)
print(result)  # 출력: 8
# 이는 x와 y를 받아서 그 합을 반환하는 함수이다.

# 예시3) 리스트의 각 요소에 lambda 함수 적용
numbers = [1, 2, 3, 4, 5]
squared_numbers = list(map(lambda x: x ** 2, numbers))
print(squared_numbers)  # 출력: [1, 4, 9, 16, 25]
# map 함수를 사용하여 리스트의 각 요소에 lambda 함수를 적용한다. 각 요소를 제곱하는 기능을 수행한다.
# cf) map(적용할 함수, iterable 객체) : iterable의 각 요소를 순회하면서 함수를 적용한다.

 

apply 메서드

apply 메서드는 데이터프레임이나 시리즈에 함수(메서드)를 적용할 수 있는 메서드이다. 특정 열이나 행에 대해 지정한 함수를 한 번에 적용할 수 있다.   DataFrame.apply(func, axis=0) 의 구조를 가지며, 여기서 func는 적용할 함수이고, axis=0이면 열 단위, axis=1이면 행 단위로 적용된다.

# 예시) apply를 사용한 시리즈에 대한 함수 적용
import pandas as pd

# 데이터프레임 생성
data = {
    'numbers': [1, 2, 3, 4, 5]
}
df = pd.DataFrame(data)

# 제곱을 계산하는 함수
def square(x):
    return x ** 2

# apply를 사용하여 제곱 계산
df['squared'] = df['numbers'].apply(square)

# 설명 : square 함수를 사용하여 numbers 열의 각 요소에 대해 제곱을 계산하고, 새로운 열 squared에 저장한다.

 

아래의 예시는 lambda 함수와 apply 메서드가 함께 적용된 예시다.

더보기
# 예시1) 문자열 길이를 구하는 예시
# 데이터프레임 생성
data = {
    'words': ['apple', 'banana', 'cherry', 'date']
}
df = pd.DataFrame(data)

# lambda와 apply를 사용하여 문자열 길이 계산
df['length'] = df['words'].apply(lambda x: len(x))
print(df)

# 설명: apply를 사용하여 각 단어의 길이를 계산하고, length라는 새로운 열에 저장한다.
# 예시2) 조건에 따른 값 변경
# 데이터프레임 생성
data = {
    'scores': [85, 70, 90, 60, 75]
}
df = pd.DataFrame(data)

# lambda와 apply를 사용하여 합격/불합격 판단
df['result'] = df['scores'].apply(lambda x: 'Pass' if x >= 75 else 'Fail')

# 설명: apply와 lambda를 사용하여 점수가 75 이상인 경우 'Pass', 그렇지 않으면 'Fail'로 표시한다.
# 예시3) 텍스트 전처리
import pandas as pd
import re

# 예시 데이터프레임
data = {
    'text': [
        'Hello World! 123',
        'Python is great!!!',
        None,
        '  Preprocessing TEXT  '
    ]
}
df = pd.DataFrame(data)

# 전처리 함수
def preprocess_text(text):
    if isinstance(text, float):
        return ""
    text = text.lower()  # 대문자를 소문자로
    text = re.sub(r'[^\w\s]', '', text)  # 구두점 제거
    text = re.sub(r'\d+', '', text)  # 숫자 제거
    text = text.strip()  # 띄어쓰기 제외하고 빈 칸 제거
    return text

# 텍스트 전처리
df['cleaned_text'] = df['text'].apply(lambda x: preprocess_text(x))

# 설명: preprocess_text 함수와 lambda, apply를 사용하여 각 텍스트에 대한 전처리를 수행하고, 전처리된 텍스트를 새로운 열에 저장한다.

이렇게 lambda와 apply를 사용하면 데이터프레임의 각 요소에 쉽게 함수를 적용할 수 있으며, 텍스트 전처리와 같은 반복적인 작업을 간단하게 수행할 수 있다.

'AI 부트캠프 > 챕터2(10.14~11.08)' 카테고리의 다른 글

WIL 4  (0) 2024.10.25
TIL 22  (0) 2024.10.25
TIL 20  (0) 2024.10.23
TIL 19  (1) 2024.10.22
TIL 18 머신러닝  (0) 2024.10.21