map()
map(함수, iterable 값)
이와 같이 map() 함수를 이용하면 집합 데이터 + 데이터에 대한 ~한 동작/연산을 수행할 수 있다.
map() 함수의 결과는 map 객체이고, map 객체도 iterable 하다.
map() 함수 사용 예제

매개변수 값을 제곱한 뒤 리턴하는 square() 함수를 만든 뒤 map() 함수의 첫 번째 인수로 넣었다.
map() 함수로 리턴된 값을 변수 m에 저장하고 실행해보면 m은 map 객체라고 나온다.
map 객체 또한 iterable 한 객체이고, list로 형 변환할 수 있다.
[1, 2, 3] 데이터를 넣었는데 모두 제곱이 되어서 [1, 4, 9]가 된 것을 확인할 수 있다.
list() 형 변환 함수 인수로 map() 함수 자체를 넣어 바로 list 값을 얻을 수 있다.
map() 함수와 lambda 함수

map() 함수 매개변수로 함수를 넣는 것처럼 lambda 함수를 넣을 수 있다.
lambda 함수를 변수에 저장한 뒤 넣어도 되고, lambda 함수 그 자체를 넣어도 잘 동작한다.
lambda 함수 이중으로 사용
list 데이터를 제곱한 다음에 음수 값을 내본다.
[3, 2, -4] list를 [-9, -4, -16]으로 변경하는 것이다.

In [10]과 In [11]은 동일한 의미를 가진 코드이다.
lambda 함수를 이중으로 사용해 코드를 만들 수도 있다.
lambda(if-else)
if-else를 사용해 lambda 함수를 만들 수도 있고, map() 함수가 lambda 함수 내에 들어가서 사용될 수도 있다.
데이터를 다룰 때 유용하게 사용할 수 있다.
아래 예제를 통해 어떻게 사용하는지 알아본다.
map() 함수 csv 파일 데이터에서 응용
height,weight,label
140,45,normal
145,72,fat
150,61,fat
137,56,fat
192,48,thin
175,77,fat
위와 같은 데이터가 저장된 csv 파일이 있다고 가정할 때, height와 weight 값들은 float 형으로 사용하고 싶은데 object 타입인 경우가 있을 것이다. 그럴 때 lambda 함수와 map() 함수를 사용하여 전체 데이터 타입을 변경할 수 있다.


In [15]에서 데이터를 처음 읽을 때 개행이 안 된 상태로 존재했기 때문에 \n을 이용해 데이터를 한 줄씩 잘라준다.
In [16]에서 lambda 함수와 if-else 문을 사용하였다. isdigit() 함수를 이용해 들어오는 n 값이 숫자형이면 float() 형 변환 함수를 사용하여 float형 n을 반환하고, 아닌 경우 기존 n을 그대로 반환하는 lambda 함수를 만들어 f_tonum에 저장한다.
In [17]에서는 map() 함수를 이용해 매개변수로 들어오는 값들에 f_tonum 함수를 적용시키고, 그렇게 변경된 데이터들을 list 형태로 반환하는 lambda 함수 f_cols를 생성한다. (혹시 모를 경우를 대비해 strip() 함수를 이용해 들어오는 값의 앞뒤 공백을 삭제해준다.)
마지막으로 In [18]에서 아까 만든 lines 데이터 값에 대해 f_cols 함수를 적용시켜 list로 반환한다.
위와 같은 방법으로 lambda 함수와 map() 함수를 사용해 데이터 파일을 다뤄볼 수 있다.
map()
map(함수, iterable 값)
이와 같이 map() 함수를 이용하면 집합 데이터 + 데이터에 대한 ~한 동작/연산을 수행할 수 있다.
map() 함수의 결과는 map 객체이고, map 객체도 iterable 하다.
map() 함수 사용 예제

매개변수 값을 제곱한 뒤 리턴하는 square() 함수를 만든 뒤 map() 함수의 첫 번째 인수로 넣었다.
map() 함수로 리턴된 값을 변수 m에 저장하고 실행해보면 m은 map 객체라고 나온다.
map 객체 또한 iterable 한 객체이고, list로 형 변환할 수 있다.
[1, 2, 3] 데이터를 넣었는데 모두 제곱이 되어서 [1, 4, 9]가 된 것을 확인할 수 있다.
list() 형 변환 함수 인수로 map() 함수 자체를 넣어 바로 list 값을 얻을 수 있다.
map() 함수와 lambda 함수

map() 함수 매개변수로 함수를 넣는 것처럼 lambda 함수를 넣을 수 있다.
lambda 함수를 변수에 저장한 뒤 넣어도 되고, lambda 함수 그 자체를 넣어도 잘 동작한다.
lambda 함수 이중으로 사용
list 데이터를 제곱한 다음에 음수 값을 내본다.
[3, 2, -4] list를 [-9, -4, -16]으로 변경하는 것이다.

In [10]과 In [11]은 동일한 의미를 가진 코드이다.
lambda 함수를 이중으로 사용해 코드를 만들 수도 있다.
lambda(if-else)
if-else를 사용해 lambda 함수를 만들 수도 있고, map() 함수가 lambda 함수 내에 들어가서 사용될 수도 있다.
데이터를 다룰 때 유용하게 사용할 수 있다.
아래 예제를 통해 어떻게 사용하는지 알아본다.
map() 함수 csv 파일 데이터에서 응용
height,weight,label
140,45,normal
145,72,fat
150,61,fat
137,56,fat
192,48,thin
175,77,fat
위와 같은 데이터가 저장된 csv 파일이 있다고 가정할 때, height와 weight 값들은 float 형으로 사용하고 싶은데 object 타입인 경우가 있을 것이다. 그럴 때 lambda 함수와 map() 함수를 사용하여 전체 데이터 타입을 변경할 수 있다.


In [15]에서 데이터를 처음 읽을 때 개행이 안 된 상태로 존재했기 때문에 \n을 이용해 데이터를 한 줄씩 잘라준다.
In [16]에서 lambda 함수와 if-else 문을 사용하였다. isdigit() 함수를 이용해 들어오는 n 값이 숫자형이면 float() 형 변환 함수를 사용하여 float형 n을 반환하고, 아닌 경우 기존 n을 그대로 반환하는 lambda 함수를 만들어 f_tonum에 저장한다.
In [17]에서는 map() 함수를 이용해 매개변수로 들어오는 값들에 f_tonum 함수를 적용시키고, 그렇게 변경된 데이터들을 list 형태로 반환하는 lambda 함수 f_cols를 생성한다. (혹시 모를 경우를 대비해 strip() 함수를 이용해 들어오는 값의 앞뒤 공백을 삭제해준다.)
마지막으로 In [18]에서 아까 만든 lines 데이터 값에 대해 f_cols 함수를 적용시켜 list로 반환한다.
위와 같은 방법으로 lambda 함수와 map() 함수를 사용해 데이터 파일을 다뤄볼 수 있다.