728x90
반응형
SMALL
1. apply
- Series나 DataFrame에 구체적인 로직을 적용하고 싶을 때 사용
- apply를 적용하기 위해서는 별도의 함수가 먼저 정의되어야 함
- 먼저 작성된 함수를 apply에 매개변수로 전달함
df = pd.read_csv('/content/drive/MyDrive/KDT/Python/2. 데이터분석/korean-idol.csv')
df
# 성별이 남자는 1, 여자는 0으로 변환(loc 사용)
df.loc[df['성별'] == '남자', '성별'] =1
df.loc[df['성별'] == '여자', '성별'] =0
df
✅ 위의 코드를 함수로 작성하여 apply를 통해 적용시켜보자.
# df 되돌리기
df = pd.read_csv('http://bit.ly/ds-korean-idol')
# 함수 정의
def male_or_female(x):
if x=='남자':
return 1
elif x=='여자':
return 0
# 성별 컬럼에 정의한 함수 적용하기
df['성별'].apply(male_or_female)
✅ 위 함수를 람다함수를 이용하여 작성하기
# 일회성으로 적용하고 사용하지 않는 함수는 람다함수(익명함수)를 사용
df['성별'].apply(lambda x: 1 if x =='남자' else 0)
✅ 'New성별'이라는 파생변수를 만들어 위 함수를 적용시킨 새로운 컬럼 만들기
df['New성별'] =df['성별'].apply(lambda x: 1 if x =='남자' else 0)
df.head()
2. map
- 딕서녀리를 통해 데이터와 같은 키의 값을 적용
- 각 원소를 하나씩 가져와서 함수를 적용하고, 그 결과를 반환
df = pd.read_csv('http://bit.ly/ds-korean-idol')
df.head()
map_gender = {'남자':1, '여자':0}
df['성별'].map(map_gender)
df['New성별'] = df['성별'].map(map_gender)
3. apply/map 차이
- 적용 가능한 객체의 종류
- 'map': 'Series' 객체(열)에만 사용
- 'apply': 'Series' 또는 'DataFrame' 객체에 모두 사용할 수 있음
- 함수의 적용 방식
- 'map': 각 원소에 함수를 적용하고, 각 원소별로 결과를 반환
- 'apply': 'Series'의 경우, 각 원소에 함수를 적용하고, 각 원소별로 결과를 반환. 'DataFrame'의 경우, 기본적으로 각 열(column)에 함수를 적용하고, 각 열별로 결과를 반환합니다. 행(row)에 함수를 적용하려면 'axis=1' 인자를 추가
- 사용 가능한 함수
- 'map': 람다(lambda) 함수 또는 사용자 정의 함수를 적용
- 'apply': 람다(lambda) 함수, 사용자 정의 함수, 내장 함수 등을 적용. 'apply' 메서드는 더 다양한 함수를 적용할 수 있는 유연성을 제공
- 반환 결과
- 'map': 'Series' 객체(열)의 형태로 반환
- 'apply': 'Series' 또는 'DataFrame' 객체의 형태로 반환
728x90
반응형
LIST