[Python] Basic: map

Jae Gyeong Lee·2024년 5월 2일

map

  • 반복할 수 있는 연산을 반복문 없이 수행해 주는 함수
  • list type의 값들에 함수를 일괄 적용한 뒤 그 결과값을 반환
map(func, iterable)
 - func: 적용할 함수
 - iterable: func을 적용할 iterable 데이터(list)
data = [1, 2, 3, 4, 5]

def add_2(x):
    result = x + 2
    return result

1. map을 사용하지 않은 경우

1.1) for문 사용

result = []

for n in data:
    result.append(add_2(n))
print(result)
>>> [3, 4, 5, 6, 7]

1.2) Comprehension 사용

result = [add_2(n) for n in data]
print(result)
>>> [3, 4, 5, 6, 7]

2. map을 사용한 경우

2.1) 사용자 정의 함수 사용

list(map(add_2, data))
>>> [3, 4, 5, 6, 7]

2.2) Lambda 사용

list(map(lambda x:x+2, data))
>>> [3, 4, 5, 6, 7]

2.3) Lambda 사용 + 조건 설정

  • lambda 안에 if문을 사용하면 else도 반드시 포함, elif는 사용 불가
# x*10의 값들 반환 단, x%2 == 0 조건을 만족한 x만 * 10을 적용
list(map(lambda x: x*10 if x % 2 == 0 else x, data))
>>> [1, 20, 3, 40, 5]

3. map, pandas와 함께 사용하는 경우

1) apply 함수와 같은 방식으로 사용해 column을 변경/추가해 줄 수 있음
2) dictionary type의 값을 직접 전달해 값으로 변경해 줄 수 있음

import pandas as pd

data_list = [['A', 'Math'],
             ['B', 'Psychology'],
             ['C', 'Computer'],
             ['E', 'Communication'],
             ['D', 'Language']]

df = pd.DataFrame(data_list, columns = ['Name', 'Major'])
df
>>>
	Name	Major
0	A		Math
1	B		Psychology
2	C		Computer
3	E		Communication
4	D		Language

3.1) apply 함수 처럼 사용

df['Name_double'] = df['Name'].map(lambda x: x*2)
df
>>>
	Name	Major	Name_double
0	A		Math			AA
1	B		Psychology		BB
2	C		Computer		CC
3	E		Communication	EE
4	D		Language		DD

3.2) dictionary 값 전달

mapping = {'Math': '01', 
           'Psychology': '02',
           'Computer': '03',
           'Communication': '04',
           'Language': '05'}

df['Major_code'] = df['Major'].map(mapping)
df
>>>
	Name	Major	Name_double	Major_code
0	A		Math			AA	01
1	B		Psychology		BB	02
2	C		Computer		CC	03
3	E		Communication	EE	04
4	D		Language		DD	05
profile
안녕하세요 반갑습니다. 공부한 내용들을 기록하고 있습니다.

0개의 댓글