Recent Posts
Recent Comments
Archives
반응형
250x250
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Today
Yesterday

Total
05-02 06:06
관리 메뉴

Hey Tech

[Python] map, lambda 함수를 활용한 데이터 핸들링 방법 및 이점 본문

AI & 빅데이터/데이터 분석 with Python

[Python] map, lambda 함수를 활용한 데이터 핸들링 방법 및 이점

Tony Park 2022. 2. 4. 07:58
728x90
반응형

🔥 목표

오늘은 파이썬 map 함수와 lambda 함수를 활용하여 데이터를 핸들링하는 방법과 이점에 대해 알아봅니다.

👨‍💻 문제 상황 예시

데이터프레임 내 특정 칼럼의 데이터를 활용하여 어떠한 연산을 거쳐 새로운 값들로 이루어진 칼럼을 새롭게 생성하고 싶다면 어떻게 해야 할까요? 구체적인 예시와 함께 알아보겠습니다. 아래와 같이 dataset이라는 데이터프레임에 yyyymmdd 형식의 date 정보가 담긴 date_full 칼럼이 있다고 가정해 보겠습니다.

date_full 칼럼

 

만약, 아래와 같이 연도 정보만 추출하여 date_year라는 칼럼에 새롭게 저장하고 싶다면 어떻게 코드를 작성해야 할까요?

date_full, date_year 칼럼

💡 해결방법 1: 반복문 활용(Bad Case ❌)

반복문을 활용하여 date_full 칼럼 내 데이터를 한 개씩 접근하여 원하는 정보만 추출할 수 있겠죠.

참고로 date_full 칼럼의 데이터 타입은 String이라고 가정하겠습니다.

dataset['date_year'] = ''
for i in range(len(dataset)):
    dataset['date_year'][i] = dataset['date_full'][i][0:4]

반복문으로 문제를 해결할 수는 있겠지만 데이터 개수가 많아질수록 연산 비용이 증가한다는 치명적인 단점이 존재합니다.

💡 해결방법 2: map, lambda 함수 활용(Good Case ✅)

map 함수는 반복 가능한 객체 내 요소별로 특정 함수를 수행하여 결괏값을 반환받는 함수이죠.

map 함수에서 호출할 함수가 단일 문장 수준으로 간단하게 작성이 가능하다면,

따로 외부에서 정의하는 것보다 lambda 함수를 활용하는 것이 좋습니다.

lambda 함수콜론(:)을 기준으로 좌측에 입력 데이터를, 우측에는 반환할 데이터를 입력합니다.

즉, lambda 함수는 함수 생성을 통해 발생할 수 있는 메모리 유발을 방지할 뿐만 아니라 함수의 기능을 제공합니다.

 

map 함수와 lambda를 활용하여 위의 예시 문제를 코드로 구현하면 다음과 같습니다.

dataset['date_year'] = list(map(lambda data: data[0:4], dataset['date_full']))

어떤가요?

우선 코드 길이부터 3줄에서 1줄로 줄여졌을 뿐만 아니라 실행 속도에서 매우 큰 차이가 있습니다.

⏳ 실행 시간 비교

(1) 반복문 활용(Bad Case ❌)

제가 갖고 있는 테스트용 데이터셋에는 총 26만 5천여 개의 데이터가 존재합니다.

반복문을 활용했을 때는 아래와 같이 349초가 걸렸습니다.

(2) map, lambda 함수 활용(Good Case ✅)

반복문과 다르게, map 함수와 lambda 함수를 사용했을 때는 아래와 같이 0.1초면 연산이 끝나는 것을 알 수 있습니다.

실행 속도 측면에서 단순 반복문을 활용했을 때보다 약 3,354배만큼 연산을 빠르게 수행했다는 것을 알 수 있죠.

👨‍💻 결론

방대한 양의 데이터를 처리할 때는 단순 반복문 사용은 연산에 큰 비용이 들어가기 때문에 최대한 사용을 지양해야 합니다.

파이썬에서는 map, lambda 함수 등을 활용하면 메모리 낭비를 줄여줄 뿐만 아니라 연산 비용을 크게 줄여줄 수 있습니다.

실전에서 해당 함수를 자유자재로 사용할 수 있도록 직접 본인이 풀고자 하는 문제에서 적극 활용해 보시길 권장합니다.

참고할 만한 포스팅

1.   [파이썬] lambda 함수는 언제, 어떻게 쓸까?
2.  [파이썬] map 함수에 대해 알아보자(Feat. lambda 표현식)
3.  [파이썬] filter 함수에 대해 알아보자(feat. lambda 표현식)
4.  [파이썬] reduce 함수에 대해 알아보자(feat. lambda 표현식)

오늘은 파이썬 map, lambda 함수를 활용한 데이터 핸들링 방법과 이점에 대해 알아봤습니다.

포스팅 내용에 오류가 있다면 아래에 댓글 남겨주세요!

그럼 오늘도 멋진 하루 만드시길 바랍니다.

고맙습니다 :)

728x90
반응형
Comments