경험 리뷰/한국경제 with Tossbank
2024.07.03 / Pandas - apply, lambda / 문제 분석 (2)
shok11
2024. 7. 3. 17:48
728x90
반응형
[K-Digital Training] 한국경제신문 with toss bank
- pandas: 데이터 프레임(DataFrame)이라는 표 같은 구조를 만들어서 데이터를 쉽게 다룰 수 있게 해주는 도구.
- apply: 데이터 프레임의 각 행(가로,row)이나 열(새로,column)에 어떤 함수를 적용할 때 사용하는 메서드.
- lambda: 이름이 없는 함수를 간단하게 만드는 방법.
import pandas as pd
data = {
'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eva'],
'Age': [23, 35, 45, 28, 34],
'Salary': [70000, 80000, 120000, 90000, 110000]
}
df = pd.DataFrame(data)
print(df)
# import pandas as pd: pandas를 불러오고 pd라는 이름으로 사용하겠다는 뜻.
# data: 이름, 나이, 월급 데이터를 딕셔너리 형식으로 생성.
# pd.DataFrame(data): 이 딕셔너리를 데이터 프레임으로 변환.
# print(df): 데이터 프레임을 출력.
df['Salary'] = df['Salary'].apply(lambda x: x * 1.1)
print(df)
#salary : 월급
#df['Salary'] = df['Salary'].apply(lambda x: x * 1.1)
# apply: 데이터 프레임의 "각각" 행(가로,row)이나 열(새로,column)에 어떤 함수를 적용할 때 사용하는 메서드.
# 데이터 프레임 출력하기 (변경 후)
#print("\n변경 후 데이터 프레임:")
#print(df)
df['Age Group'] = df['Age'].apply(lambda x: 'Young' if x < 30 else 'Old')
print(df)
# Age Group 열 추가하기
#df['Age Group'] = df['Age'].apply(lambda x: 'Young' if x < 30 else 'Old')
# 데이터 프레임 출력하기 (변경 후)
#print("\n변경 후 데이터 프레임:")
#print(df)
#lambda 함수는 파이썬에서 익명 함수(이름이 없는 함수)를 만들 때 사용하는 간단한 방법
#lambda 함수의 장점
#간결함: 함수 정의를 한 줄로 간단하게 할 수 있다.
#익명성: 한 번만 사용될 간단한 함수를 정의할 때 유용하다.
#lambda 함수의 단점
#복잡한 로직에 부적합: 너무 복잡한 로직을 lambda 함수로 작성하면 가독성이 떨어진다.
#디버깅 어려움: 익명 함수라서 이름이 없기 때문에 디버깅할 때 불편할 수 있다.
df['Age_Salary'] = df.apply(lambda row: row['Age'] * row['Salary'], axis=1)
print(df)
#df.apply(lambda row: row['Age'] * row['Salary'], axis=1): 데이터 프레임의 각 행(row)에 대해 나이와 월급을 곱해서 새로운 열을 추가. 여기서 axis=1은 행을 기준으로 함수를 적용하겠다는 의미.
#lambda row: row['Age'] * row['Salary']: 각 행(row)에 대해 'Age'와 'Salary' 값을 곱하는 간단한 함수.
#lambda row: 여기서 row는 데이터 프레임의 한 행.
#row['Age'] * row['Salary']: 한 행에서 'Age'와 'Salary' 값을 가져와 곱하는 작업을 수행.
#axis=1: 행(row) 단위로 함수를 적용한다는 의미. 각 행마다 lambda 함수가 실행.
#print(df): 변경된 데이터 프레임을 출력.
df['Initial'] = df['Name'].apply(lambda x: x[0])
print(df)
#df['Initial'] = df['Name'].apply(lambda x: x[0]): 각 사람의 이름에서 첫 글자를 추출해서 Initial 열에 추가.
#lambda x: x[0]: lambda 함수에서 x는 'Name' 열의 각 값을 나타냄. x[0]은 문자열 x의 첫 번째 글자를 의미.
#예를 들어, x가 'Alice'이면, x[0]은 'A'.
#apply: 이 함수는 데이터 프레임의 각 열(column)이나 행(row)에 함수를 적용할 때 사용. 여기서는 'Name' 열의 각 값에 lambda 함수를 적용.
#df['Initial']: 'Initial'이라는 새로운 열을 데이터 프레임에 추가.
def categorize_salary(salary):
if salary > 100000:
return 'High'
else:
return 'Low'
df['Salary Category'] = df['Salary'].apply(lambda x: categorize_salary(x))
print(df)
#월급(Salary)에 따라 'High' 또는 'Low'로 분류하는 새로운 열(Salary Category)을 추가
#import pandas as pd: pandas를 불러오고 pd라는 이름으로 사용할 예정.
#data: 이름, 나이, 월급 데이터는 딕셔너리 형식.
#pd.DataFrame(data): 이 딕셔너리를 데이터 프레임으로 변환.
#categorize_salary: 월급을 'High' 또는 'Low'로 분류하는 함수를 정의
#import pandas as pd: pandas를 불러오고 pd라는 이름으로 사용할 예정.
#data: 이름, 나이, 월급 데이터를 딕셔너리 형식으로 생성.
#pd.DataFrame(data): 이 딕셔너리를 데이터 프레임으로 변환.
#categorize_salary(salary): 주어진 월급(salary)이 100000보다 크면 'High', 그렇지 않으면 'Low'를 반환하는 함수를 정의.
#if salary > 100000: return 'High'
#else: return 'Low'
#df['Salary Category']: 'Salary' 열의 각 값에 대해 categorize_salary 함수를 적용해 새로운 열 'Salary Category'를 추가. 여기서 apply와 lambda를 사용해 함수 적용.
#lambda x: categorize_salary(x): x는 'Salary' 열의 각 값을 나타내고, 이를 categorize_salary 함수에 전달해 결과 도출.
#pandas의 apply와 lambda를 사용하여 데이터 프레임에 새로운 열을 추가하는 예제
# Bonus Salary 열 추가하기
df['Bonus Salary'] = df.apply(lambda row: row['Salary'] * 0.5 if row['Age'] > 30 else row['Salary'], axis=1)
# 데이터 프레임 출력하기
print(df)
#df.apply()는 데이터 프레임의 각 행 또는 열에 함수를 적용. 여기서는 axis=1을 사용하여 각 행(row)에 함수를 적용.
#lambda row: row['Salary'] * 0.5 if row['Age'] > 30 else row['Salary']는 익명 함수로, 각 행에서 Age가 30보다 크면 Salary의 절반을 반환하고, 그렇지 않으면 Salary를 그대로 반환.
#df['Bonus Salary']는 새로운 열을 데이터 프레임에 추가. 이 열에는 각 행의 Age 값에 따라 계산된 보너스 월급이 입력.
#Age가 30보다 큰 사람들은 Salary의 절반 값이 Bonus Salary에 입력되고, 그렇지 않은 사람들은 Salary 값이 그대로 Bonus Salary에 입력.
# Average_Age_Salary 열 추가하기
df['Average_Age_Salary'] = df.apply(lambda row: (row['Salary'] + row['Bonus Salary'] / 2), axis=1)
# 데이터 프레임 출력하기
print(df)
#df.apply()를 사용하여 각 행에 함수를 적용.
#lambda row: (row['Salary'] + row['Bonus Salary']) / 2는 각 행에서 'Salary'와 'Bonus Salary' 값을 더한 후 2로 나눠 평균을 계산.
#df['Average_Age_Salary']는 새로운 열을 데이터 프레임에 추가. 이 열에는 각 행의 'Salary'와 'Bonus Salary'의 평균 값이 입력.
#Average_Age_Salary 열에는 'Salary'와 'Bonus Salary'의 평균 값이 입력.
728x90
반응형