Python

04 Apply, Map

hyerimir 2022. 8. 7. 21:22

 

https://www.datamanim.com/dataset/99_pandas/pandasMain.html

 

판다스 연습 튜토리얼 — DataManim

Question 43 df의 데이터 중 new_price값이 lst에 해당하는 경우의 데이터 프레임을 구하고 그 갯수를 출력하라 lst =[1.69, 2.39, 3.39, 4.45, 9.25, 10.98, 11.75, 16.98]

www.datamanim.com

 

 

Question 56

데이터를 로드하고 데이터 행과 열의 갯수를 출력하라

df =pd.read_csv('https://raw.githubusercontent.com/Datamanim/pandas/main/BankChurnersUp.csv',index_col=0)
Ans =df.shape
Ans

 

 

Question 57

Income_Category의 카테고리를 map 함수를 이용하여 다음과 같이 변경하여 newIncome 컬럼에 매핑하라

dic = {
    'Unknown'        : 'N',
    'Less than $40K' : 'a',
    '$40K - $60K'    : 'b',
    '$60K - $80K'    : 'c',
    '$80K - $120K'   : 'd',
    '$120K +'        : 'e'   
}

df['newIncome'] = df.Income_Category.map(lambda x: dic[x])

Ans = df['newIncome']
Ans.head(4)

dictionary가 주어졌을 때, .map(lamda x : dic[x])

 

 

 

Question 58

Income_Category의 카테고리를 apply 함수를 이용하여 다음과 같이 변경하여 newIncome 컬럼에 매핑하라

def changeCategory(x):
    if x =='Unknown':
        return 'N'
    elif x =='Less than $40K':
        return 'a'
    elif x =='$40K - $60K':   
        return 'b'
    elif x =='$60K - $80K':    
        return 'c'
    elif x =='$80K - $120K':   
        return 'd'
    elif x =='$120K +' :     
        return 'e'

df['newIncome']  =df.Income_Category.apply(changeCategory)

Ans = df['newIncome']
Ans.head(4)

함수가 주어졌을 때, apply(func)

 

 

 

Question 59

Customer_Age의 값을 이용하여 나이 구간을 AgeState 컬럼으로 정의하라.

(0~9 : 0 , 10~19 :10 , 20~29 :20 … 각 구간의 빈도수를 출력하라)

df['AgeState']  = df.Customer_Age.map(lambda x: x//10 *10)

Ans = df['AgeState'].value_counts().sort_index()
Ans

 

Question 60

Education_Level의 값중 Graduate단어가 포함되는 값은 1 그렇지 않은 경우에는 0으로 변경하여 newEduLevel 컬럼을 정의하고 빈도수를 출력하라

df['newEduLevel'] = df.Education_Level.map(lambda x : 1 if 'Graduate' in x else 0)
Ans = df['newEduLevel'].value_counts()
Ans

 

 

Question 61

Credit_Limit 컬럼값이 4500 이상인 경우 1 그외의 경우에는 모두 0으로 하는 newLimit 정의하라.

newLimit 각 값들의 빈도수를 출력하라

df['newLimit'] = df.Credit_Limit.map(lambda x : 1 if x>=4500 else 0)
Ans = df['newLimit'].value_counts()
Ans

 

 

Question 62

Marital_Status 컬럼값이 Married 이고 Card_Category 컬럼의 값이 Platinum인 경우 1 그외의 경우에는 모두 0으로 하는 newState컬럼을 정의하라.

newState의 각 값들의 빈도수를 출력하라

def check(x):
    if x.Marital_Status =='Married' and x.Card_Category =='Platinum':
        return 1
    else:
        return 0


df['newState'] = df.apply(check,axis=1)

Ans  = df['newState'].value_counts()
Ans

 

 

Question 63

Gender 컬럼값 M인 경우 male F인 경우 female로 값을 변경하여 Gender 컬럼에 새롭게 정의하라.

각 value의 빈도를 출력하라

def changeGender(x):
    if x =='M':
        return 'male'
    else:
        return 'female'
df['Gender'] = df.Gender.apply(changeGender)
Ans = df['Gender'].value_counts()

Ans