Python/Pandas
[Pandas 기초] Pandas와 함수
유달잇
2021. 6. 16. 20:31
728x90
Pandas에서 함수를 이용하여 데이터를 변경해보자.
1. lambda :
- lambda 인자 : 표현식 으로 사용되며, 함수를 한 줄로 사용할 수 있는 기능을 가지고 있다.
def f(x , y):
return x + y
f(1,4) # 5
f = lambda x,y: x + y
f(1,4) # 5
-> 위의 f 함수를 lambda를 통해 구현할 수 있다.
# 제곱
(lambda x: x ** 2)(3) # 9
-> 이와 같이 한 줄로도 사용할 수 있다.
2. map( )
- 함수와 리스트를 인자로 받아 리스트의 모든 원소들에 함수를 적용시킨 후, 그 결과를 새로운 리스트에 담아준다.
ex = [1,2,3,4,5]
f = lambda x: x ** 2
list(map(f, ex)) # [1, 4, 9, 16, 25]
-> ex 리스트 원소에 모두 f 함수를 적용시켜 리스트로 반환한다.
import pandas as pd
import numpy as np
from pandas import Series
s1 = Series(np.arange(10))
s1
z = {1:'A', 2:'B', 3:'C'}
s1.map(z)
![]() |
![]() |
-> 0부터 9까지의 원소를 담는 시리즈 s1을 생성한 후, { 1 : 'A', 2 : 'B', 3 : 'C' } 형태의 dict z를 생성하여
시리즈 s1에 map 함수를 사용하여 dict를 적용시키면 위와 같이 데이터를 변경할 수 있다.
3. 데이터 변경해보기
df = pd.read_csv("wages.csv")
df.head()
-> 위 데이터의 성별(sex)을 0과 1의 값으로 변경해보자.
1. df.sex.unique( ) 를 통해 중복 없는 컬럼의 값을 확인한다.
df.sex.unique()
2-1. map( ) 을 사용하여 sex컬럼 데이터를 숫자로 변경한다.
df["sex"] = df.sex.map({'male':0, 'female':1})
df
2-2. replace( ) 를 사용하여 위와 같이 데이터를 변경할 수 있다. (꼭 inplace=True를 해야 원본 데이터가 변경된다! )
df.sex.replace(['male','female'], [0,1], inplace=True)
df
4. apply( )
- 시리즈 전체(컬럼)에 해당 함수를 적용하며 컬럼의 통계 자료를 낼 때 유용하게 사용할 수 있다.
df_info = df[["earn", "height","age"]]
df_info.head()
ex1.
f = lambda x : x.max() - x.min()
df_info.apply(f)
ex2.
df_info.apply(sum)
5. applymap( )
- 데이터프레임 전체에 해당 함수를 적용하며 컬럼의 통계 자료를 낼 때 유용하게 사용할 수 있다.
# ex) 전체 데이터프레임에 - 적용
f = lambda x : -x
df_info.applymap(f).head(5)
6. 기타 함수
6-1. describe( ) : 전체 데이터의 요약 정보를 보여준다.
df.describe()
6-2. unique( ) : 데이터의 유일한 값을 반환한다.
df.race.unique()
6-3. 카테고리형 데이터 몇 개 인지 모를 때 라벨링 하기 ( dict )
res = np.array(dict(enumerate(df["race"].unique())))
res
6-4. 카테고리형 데이터 몇 개 인지 모를때 라벨링 하기 ( list )
value = list(map(int, np.array(list(enumerate(df["race"].unique())))[:, 0].tolist()))
key = np.array(list(enumerate(df["race"].unique())), dtype=str)[:, 1].tolist()
value, key
[AI Tech Pre-course] 인공지능(AI) 기초 다지기
부스트코스 무료 강의
www.boostcourse.org
사용한 데이터 :
728x90