반응형
pandas apply로 데이터프레임 컬럼별 함수 적용하기
pandas의 apply는 데이터프레임의 모든 원소에 동일한 함수를 적용할 수 있는 유용한 기능입니다. 스칼라 함수뿐만 아니라 lambda 함수나 사용자 정의 함수도 사용 가능합니다. 이번 포스팅에서는 apply의 활용법을 살펴보겠습니다.
apply 기본 사용법
import pandas as pd
df = pd.DataFrame({'A': [1, 2, 3], 'B': [10, 20, 30], 'C': [100, 200, 300]})
# 모든 원소에 제곱근 함수 적용
df = df.apply(lambda x: x**0.5)
print(df)
출력:
A B C
0 1.0 3.16 10.0
1 1.41 4.47 14.14
2 1.73 5.48 17.32
각 열의 데이터 타입 변환하기
import pandas as pd
df = pd.DataFrame({'Age': ['27', '34', '61', '42'],
'Height': ['165.3', '189.2', '174.6', '156.7']})
print("원본 데이터프레임:")
print(df)
# 각 열의 데이터 타입을 숫자형으로 변환
df = df.apply(lambda x: pd.to_numeric(x, errors='coerce'))
print("변환된 데이터프레임:")
print(df)
print(df.dtypes)
출력:
원본 데이터프레임:
Age Height
0 27 165.3
1 34 189.2
2 61 174.6
3 42 156.7
변환된 데이터프레임:
Age Height
0 27.0 165.3
1 34.0 189.2
2 61.0 174.6
3 42.0 156.7
Age float64
Height float64
dtype: object
사용자 정의 함수도 적용 가능
import pandas as pd
df = pd.DataFrame({'A': ['Java', 'Python', 'Ruby'],
'B': ['NaN', 'Science', 'Book']})
# 문자열 길이를 반환하는 함수 정의
def strlen(x):
try:
return len(x)
except:
return 0
# 사용자 정의 함수 strlen을 applymap으로 적용
df = df.apply(strlen)
print(df)
출력:
A B
0 4 0
1 6 7
2 4 4
apply는 데이터프레임의 각 원소에 동일한 변환을 적용할 때 유용합니다. 데이터 전처리나 피처 엔지니어링 과정에서 다양하게 활용할 수 있습니다. 예제를 참고하여 여러분의 데이터 작업에도 apply를 유용하게 사용해보시기 바랍니다.
반응형
'파이썬 기초문법' 카테고리의 다른 글
판다스 pivot으로 데이터 구조 재구성하기 (0) | 2024.06.15 |
---|---|
판다스 transform으로 그룹별 변환 적용하기(그룹별 최대값 / 최소값) (0) | 2024.06.12 |
메타클래스로 파이썬 클래스 작성을 한 단계 업그레이드하기 (0) | 2024.05.12 |
숨은 고수의 기술 - 파이썬 디스크립터(Descriptor)로 캡슐화 완성하기 (0) | 2024.05.12 |
동적 코드 생성과 실행으로 파이썬 프로그래밍의 힘 키우기(eval, exec) (0) | 2024.05.12 |