강의 외부에서 추가로 알게 된 내용
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 |