-
[Python]_05_pandas_apply, lambda, map, one-hot-encoding공부/Python 2021. 6. 2. 21:04반응형
1. apply
- 함수 식이 필요함. 이때 함수 식에서는 return 사용.
Q1 . 성별에 대해 남자는 1 여자는 0으로 만들어라.
※ 여기선 성별이라는 Series를 가져왔기 때문에 x를 사용하는 것
# 1. 함수 정의 def f(x) if x == '남자': return 1 elif x=='여자: return 0 # 2. appyly 적용하여 성별에 적용 df['성별']=df['성별'].apply(f)Q2. cm당 브랜드 평판지수를 구해보세요 (브랜드 평판지수/ 키)
※ 여기서는 두 개의 열 데이터가 필요하기 때문에 df라는 데이터 프레임을 가져왔다
※ df에 대해서 apply함수를 적용할 때 axis =1을 적용해준다.
※ axis=1 :한 행 씩 처리하여 넘겨서 하나의 열로 나타내어준다.
def f(df) value = df['브랜드평판지수']/df.['키'] return value df.appply(f,axis=1)2. lamda를 이용한 apply
- 함수 식을 한 줄로 적용 가능, return 값 필요 없음
Q3. 성별에 대해 남자는 1 여자는 0으로 만들어라.
# 방법 1 - 바로 적용 df['성별'].apply(lambda x: 1 if x == '남자' else 0) # x 가 남자면 1 아니면 0을 의미함. # 방법2 - 함수 생성 후 적용 f= lambda x:1 if x=='남자' else 0) df['성별'].apply(f)Q4. '키/2' 새로운 컬럼을 생성하여 '키'의 1/2값을 넣어라.
df['키/2']=df['키'].appy(lambda x:x/2)3. map
- dic형 태를 가짐.
Q5. 남자는 1 여자는 0값을 넣어라.
my_map {'남자' : 1, '여자': 0} df['성별'].map(my_map)4. one-hot-encoding
먼저 혈액형에 대해 A =0, B=1, AB=2, O=3 이라고 map을 이용해 만들어준다면 다음과 같이 만들 수 있다.
blood_map = { 'A': 0, 'B': 1, 'AB': 2, 'O': 3,} df['혈액형_code']=df['혈액형'].map(blood_map)
하지만 우리가 만약 df['혈액형_code']를 머신러닝 알고리즘에 그대로 넣어 데이터를 예측하라고 지시한다면, 컴퓨터는 '혈액형_code'안에서 값들 간의 관계를 스스로 형성하게 된다
이 상황에서 만약 B형은 1, AB형은 2라는 값을 가지고 있는데, 컴퓨터는1+2= 3이라는 즉 B형 + AB형 = O형이다라고 잘못된 관계를 맺을 수 있게 된다
따라서, 우리는 4개의 별도의 column을 형성해주고 1개의 column에는 True 나머지는 모두 False를 넣어 줌으로써 A, B, AB, O형의 관계는 독립적이다를 표현해 주고 이를 원핫인코딩이라고 합니다.
이를 pd.get_dummies를 활용하여 나타낼 수 있다.
pd.get_dummies(df['혈액형_code'])
prefix 옵션을 주면 인덱스명을 정할 수 있다.
pd.get_dummies(df['혈액형_code'], prefix='혈액형')
반응형'공부 > Python' 카테고리의 다른 글