데이터 분석을 위한 Pandas: 10. 사용자 정의 함수 적용

Pandas에서 사용자 정의 함수를 적용하는 것은 데이터 처리와 분석의 유연성을 크게 높여줍니다. 주로 `apply()`, `applymap()`, 그리고 `map()` 메서드를 사용하여 사용자 정의 함수를 적용할 수 있습니다.


 Series에 함수 적용


apply() 메서드 사용


# python

import pandas as pd

import numpy as np


s = pd.Series([1, 2, 3, 4, 5])


def square(x):

    return x ** 2


# apply() 사용

squared = s.apply(square)

print(squared)


# 람다 함수 사용

cubed = s.apply(lambda x: x ** 3)

print(cubed)

#


map() 메서드 사용


# python

# 딕셔너리를 이용한 매핑

grade_map = {1: 'F', 2: 'D', 3: 'C', 4: 'B', 5: 'A'}

grades = s.map(grade_map)

print(grades)


# 함수를 이용한 매핑

def grade_function(x):

    if x >= 4:

        return 'Pass'

    else:

        return 'Fail'


result = s.map(grade_function)

print(result)

#


 DataFrame에 함수 적용


apply() 메서드 사용


# python

df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]})


# 열 단위로 함수 적용

def column_sum(col):

    return col.sum()


column_sums = df.apply(column_sum)

print(column_sums)


# 행 단위로 함수 적용

row_sums = df.apply(sum, axis=1)

print(row_sums)


# 복잡한 함수 적용

def complex_func(row):

    return pd.Series({'sum': row.sum(), 'mean': row.mean(), 'max': row.max()})


result = df.apply(complex_func, axis=1)

print(result)

#


applymap() 메서드 사용


#:python

# 모든 요소에 함수 적용

def format_func(x):

    return f"{x:.2f}"


formatted_df = df.applymap(format_func)

print(formatted_df)

#


 그룹화된 데이터에 함수 적용


# python

df = pd.DataFrame({

    'A': ['foo', 'bar', 'foo', 'bar', 'foo', 'bar'],

    'B': [1, 2, 3, 4, 5, 6],

    'C': [2.0, 5., 8., 1., 2., 9.]

})


# 그룹별 사용자 정의 함수 적용

def custom_agg(group):

    return pd.Series({

        'B_sum': group['B'].sum(),

        'C_mean': group['C'].mean(),

        'B_first': group['B'].iloc[0]

    })


result = df.groupby('A').apply(custom_agg)

print(result)

#


 조건부 함수 적용


# python

def condition_func(x):

    if x > 3:

        return x * 2

    else:

        return x


# numpy.where 사용

df['D'] = np.where(df['B'] > 3, df['B'] * 2, df['B'])


# apply와 lambda 함수 사용

df['E'] = df['B'].apply(lambda x: x * 2 if x > 3 else x)

#


이러한 방법들을 사용하면 복잡한 데이터 처리 로직을 Pandas DataFrame과 Series에 쉽게 적용할 수 있습니다. 사용자 정의 함수를 통해 데이터 변환, 계산, 필터링 등 다양한 작업을 수행할 수 있으며, 이는 데이터 분석의 유연성과 효율성을 크게 향상시킵니다.




#파이썬 #Python #데이터분석 #dataanalysis #사용자정의함수 #pandas #apply #custom-functions #lambdafunctions #map #lambda


0 댓글