목차
pandas.apply()는 Pandas 라이브러리에서 제공하는 함수로, 데이터프레임의 열 또는 행에 함수를 적용하기 위해 사용됩니다. 이 함수는 데이터 프레임의 가공을 위해 마련된 함수를 데이터프레임의 각 요소에 적용하고 결과를 반영할 때 사용합니다. apply() 함수의 기본 사용법을 확인한 후 각 사용 상황에 따른 사용법에 대해 정리해 보겠습니다.
1. dataframe.apply() 함수의 기본 사용법
dataframe.apply()의 기본 사용법은 다음과 같습니다
DataFrame.apply(func, axis=0, raw=False, result_type=None, args=(), **kwds)
각 인자들과 그에 대한 설명은 아래와 같습니다.
func: 적용할 함수 또는 함수 이름입니다.
axis: 함수를 적용할 축을 지정합니다. 기본값은 0으로 열에 대해 함수를 적용합니다. 1로 설정하면 행에 대해 함수를 적용할 수 있습니다.
raw: 함수에 넘겨질 객체가 축의 값을 유지할지 여부를 지정합니다. 기본값은 False로 객체가 축의 값을 보정한 후 함수에 전달됩니다.
result_type: 결과로 반환될 객체의 유형을 지정합니다. 기본값은 None으로 함수의 반환 유형에 따라 결정됩니다.
args: 함수에 전달할 위치 인수들입니다.
**kwds: 함수에 전달할 키워드 인수들입니다.
dataframe.apply() 함수는 DataFrame 객체에 대해 호출되며, 주어진 함수를 해당 객체의 각 요소에 적용합니다. 결과로 반환되는 객체는 함수에 따라 달라질 수 있습니다. 예를 들어, 함수가 스칼라 값을 반환하면 DataFrame의 해당 요소도 스칼라 값으로 대체됩니다. 반면에, 시리즈 객체나 데이터프레임 객체를 반환하면 해당 요소에는 시리즈 객체나 데이터프레임 객체가 유지됩니다.
2. 특정 함수를 열 또는 행에 적용하여 새로운 열 또는 행을 만들 때
apply()를 사용하여 기존 열의 값을 기반으로 새로운 열을 생성하거나, 특정 조건에 따라 행을 필터링하는 등의 작업을 수행할 수 있습니다.
import pandas as pd
# 예제 데이터프레임 생성
data = {'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [25, 30, 35]}
df = pd.DataFrame(data)
# Name 열의 길이를 기반으로 Length 열 생성
df['Length'] = df['Name'].apply(len)
print(df)
# 결과
# Name Age Length
# 0 Alice 25 5
# 1 Bob 30 3
# 2 Charlie 35 7
위 예제에서는 'Name' 열의 각 요소의 길이를 계산하여 'Length' 열을 생성했습니다. apply() 함수를 사용하여 len함수를 'Name' 열에 적용하였고, 반환된 길이 값을 'Length' 열에 할당하였습니다.
3. 열 또는 행의 요소를 변환하거나 가공하는 경우
apply()를 사용하여 열 또는 행의 각 요소에 함수를 적용하여 요소를 변환하거나 가공할 수 있습니다. 예를 들어, 문자열 값을 대문자로 변환하거나 날짜 값을 형식화할 수 있습니다.
import pandas as pd
# 예제 데이터프레임 생성
data = {'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [25, 30, 35]}
df = pd.DataFrame(data)
# Name 열의 값을 대문자로 변환
df['Name'] = df['Name'].apply(str.upper)
print(df)
# 결과값
# Name Age
# 0 ALICE 25
# 1 BOB 30
# 2 CHARLIE 35
위 예제에서는 'Name' 열의 각 요소를 대문자로 변환하였습니다. apply() 함수를 사용하여 str.upper 함수를 'Name' 열에 적용하였고, 반환된 대문자 값을 'Name' 열에 다시 할당하였습니다.
4. 통계 계산 또는 집계 함수를 사용하여 열 또는 행을 요약하는 경우
apply()를 사용하여 열 또는 행의 값에 대한 통계 계산이나 집계 함수를 적용할 수 있습니다. 예를 들어, 각 행의 최댓값이나 열의 합계를 계산할 수 있습니다.
import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [25, 30, 35],
'Salary': [50000, 60000, 70000]}
df = pd.DataFrame(data)
# 'Name' 열 제거
df = df.drop('Name', axis=1)
# 각 행의 최댓값 계산하여 Max 열 생성
df['Max'] = df.apply(max, axis=1)
print(df)
# 결과값
# Age Salary Max
# 0 25 50000 50000
# 1 30 60000 60000
# 2 35 70000 70000
위 예제에서는 apply() 함수를 사용하여 각 행의 최댓값을 계산하여 'Max' 열을 생성하였습니다. apply() 함수의 axis 매개변수를 1로 설정하여 행에 대해 함수를 적용하였습니다. 해당 코드를 사용하게 되면 'Name'열의 문자열 때문에 오류가 발생합니다. 이를 해결하기 위해서 df.drop을 통해 'Name' 열을 제거해 데이터프레임에 숫자 값만 남겨서 apply() 를 적용하였습니다.
5. 마치며
apply() 함수는 사용자가 작성한 함수뿐만 아니라, 람다 함수를 사용할 수도 있습니다. 또한, apply() 함수는 기본적으로 열에 대해 작동하며, axis 매개변수를 사용하여 행에 대해 작동하도록 설정할 수 있습니다.