파이썬 함수

pandas 라이브러리(6) 함수 적용 APPLYING FUNCTIONS

개발연습자1 2022. 11. 25. 10:20

데이터 프레임을 실행할때 문자열 데이터를 활용하여 함수를 적용하고 그 값을 다시 새로운 컬럼에 적용할 수 있다. 이때 pandas는 하나하나 일일이 하던 기존 방식과 다르게 데이터 프레임내에 데이터 전체에 함수를 적용하여 빠른 작업을 할 수 있다.

 

함수 적용 방법은 크게 2가지가 있다.

 

1. apply 함수를 이용하는 방법 

    pandas내에 apply 함수를 이용하여 함수를 적용 시킬수 있다. 이때 주의 할점은 변수가 앞에 들어가는 파이썬 기본 함수 가 아닌 함수는 적용할 수 없다. 대신 자신이 def함수를 이용해 정의한 함수들은 적용이 가능하다.

 

import pandas as pd

#데이터 프레임 생성

df = pd.DataFrame({'Employee ID':[111, 222, 333, 444],
                   'Employee Name':['Chanel', 'Steve', 'Mitch', 'Bird'],
                   'Salary [$/h]':[35, 29, 38, 20],
                   'Years of Experience':[3, 4 ,9, 1]})
df

데이터 프레임을 생성한뒤 여기에 직원 이름의 글자수를 세어 새로운 컬럼 length를 만든다.

 

# Employee Name의 이름의 문자 갯수를 구해서.
#새로운 컬럼 length 에 저장하세요.
df['length'] = df['Employee Name'].apply( len )
df

빨간색 부분에 length칼럼이 추가 된것을 알 수 있다.

 

 

다른 예제로 def로 정의된 함수를 적용한 데이터를 알아보자

#맨위에 데이터 프레임 활용

#시급이 30 이상이면, A라고하고,
#그렇지 않으면 B라고 구분해서
#처리해달라

# 1. 함수를 만든다. 시급 정보가 입력되면 A인지B인지를 리턴하는 함수
def grouping(salary):
    if salary>= 30:
        return "A"
    else:
        return 'B'
grouping(20)
>>> 'B'
#정의된 grouping 함수

# 2. 위에서 민든 함수를, 데이터 프레임의 salary[%/h] 컬럼에 저장된
# 데이터들에 모두 적용해야 한다.
df['Salary [$/h]'].apply(grouping)
>>> 0    A
    1    B
    2    A
    3    B
    Name: Salary [$/h], dtype: object

 

 

 

 

2. pandas의  str 라이브러리를 이용하는 방법

pandas내에 str라이브러리를 이용하면 문자열 데이터를 다루는 함수를 함수 상관없이 적용할수 있다. 이 방법의 장점은 변수가 필요한 함수도 적용 가능하다는 장점이 있다.

#데이터 프레임은 맨위 참고

#판다스의 str 라이브러리를 이용한 방법

# Employee Name 의 이름을 모두 대문자로 바꿔서
#새로운 컬럼 upper_name 이라는 컬럼으로 저장해 주세요.

df['Employee Name'].str.upper()
>>> 0    CHANEL
    1     STEVE
    2     MITCH
    3      BIRD
    Name: Employee Name, dtype: object

 

 

 

반응형