본문 바로가기
Python/Data Analysis

[파이썬, Python] Pandas 모듈 - 7️⃣ 데이터프레임 함수 적용 하기 apply, map

by coding-choonsik 2023. 6. 13.
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 차이

  1. 적용 가능한 객체의 종류
    • 'map': 'Series' 객체(열)에만 사용
    • 'apply': 'Series' 또는 'DataFrame' 객체에 모두 사용할 수 있음
  2. 함수의 적용 방식
    • 'map': 각 원소에 함수를 적용하고, 각 원소별로 결과를 반환
    • 'apply': 'Series'의 경우, 각 원소에 함수를 적용하고, 각 원소별로 결과를 반환. 'DataFrame'의 경우, 기본적으로 각 열(column)에 함수를 적용하고, 각 열별로 결과를 반환합니다. 행(row)에 함수를 적용하려면 'axis=1' 인자를 추가
  3. 사용 가능한 함수
    • 'map': 람다(lambda) 함수 또는 사용자 정의 함수를 적용
    • 'apply': 람다(lambda) 함수, 사용자 정의 함수, 내장 함수 등을 적용.  'apply' 메서드는 더 다양한 함수를 적용할 수 있는 유연성을 제공
  4. 반환 결과
    • 'map': 'Series' 객체(열)의 형태로 반환
    • 'apply': 'Series' 또는 'DataFrame' 객체의 형태로 반환

 

 

728x90
반응형
LIST