Python / / 2022. 10. 4. 17:45

Python - Pandas 데이터프레임 응용

import seaborn as sns

'''데이터 프레임 응용
<함수 매핑> 
-시리즈 또는 데이터 프레임의 개별 원소를 특정 함수에 일대일 대응 시키는 과정 

시리즈.apply(매핑함수) : 매핑함수에 시리즈의 모든 원소를 하나씩 입력하고 리턴

타이타닉의 age,fare 열 선택후 새로운 열 ten 추가 모든 데이터는 숫자 10 

임의의 객체 n에 숫자 10을 더하는 add_10(n) 사용자 함수 정의 

객체 a와 b를더하는 add_two_obj(a,b) 함수 정의 

add_10(10) 출력 
add_two_obj(10,10) 출력
'''

#타이타닉 가져오기 
titanic = sns.load_dataset('titanic')

#age, fare 열 선택 
data = titanic.loc[:,['age','fare']]
#열 ten 추가 데이터 = 10 
data['ten'] = 10

def add_10(ab):
    return ab+10

def add_two_obj(a,b):
    return a+b



#age 열에 apply 메소드로 add_10 함수 매핑후, 결과를 sr1에 저장 
sr1 = data['age'].apply(add_10)
#print(sr1)
#age열에 apply메소드로 add_two_obj함수 매핑 후 결과를 sr2에 저장 
sr2 = data['age'].apply(add_two_obj,b=10)
#print(sr2)
#age 열에 apply 메소드로 람다 함수 활용 add_10 함수 사용 결과를 sr3에 저장 
sr3 =data['age'].apply(lambda x: add_10(x))
#print(sr3)
#sr1, sr2 sr3 결과 비교

'''
데이터 프레임 원소에 함수 매핑 

-데이터프레임.applymap(매핑함수) : 매핑 함수에 데이터프레임의 각 원소를 하나씩 넣어 리턴
-데이터프레임.apply(매핑함수,axis=0) 모든열을 하나씩 분리하여 매핑 함수의 인자로 각 열이 전달 

-시리즈로 인수를 받아서 null값 여부를 반환하는 사용자 함수 missing_value 정의 
-데이터프레임의 각 열을 인수로 전달하면 데이터프레임 반환

'''
print('-----------------------------------')
print(data[['age','fare']].applymap(add_10))

def missing_value(series):
    return series.isnull()

print(missing_value(data[['age','fare','ten']]))

'''데이터프레임의 각 열에 함수 매핑

1.시리즈를 입력받아 하나의 값을 반환
2.시리즈의 최댓값과 최솟값의 계산하여 값을 반환하는 min_max(x) 함수 정의 
3.데이터프레임의 apply 메소드에 min_max 함수 적용 

'''

def min_max(x):
   return max(x)-min(x)   


print(data.apply(min_max))


'''데이터프레임의 각 행에 함수 매핑

데이터프레임.apply(매핑함수,axis=1)

타이타닉 age,ten열 지정, 메소드에 add_two_obj  매핑함수 , axis =1 옵션 지정
'''

data['add'] = data.apply(lambda x: add_two_obj(x['age'],x['ten']),axis=1)
print(data['add'])


'''데이터 프레임.pipe(매핑함수)
-매핑함수가 반환하는 리턴값에 따라 pipe 메소드가 반환하는 객체의 종류가 결정
-데이터프레임 반환 , 시리즈 반환 , 개별 값 반환등 
--각 열의 NaN 찾기 함수 생성 - 데이터 프레임 전달하면 데이터 프레임 반환 

--각 열의 NaN 개수 반환 함수 생성 - 데이터 프레임 전달하면 시리즈 반환

--데이터프레임의 총 NaN 개수찾기 함수 생성- 데이터프레임 전달하면 값을 반환
'''

def find_nan(x):
    return x.isnull()

def missing_count(x):
    return missing_value(x).sum()

def total_number_missing(x):
    return missing_count(x).sum()

'''데이터 프레임에 pipe()메소드로 3개 함수 매핑하기'''


result_data = data.pipe(missing_value)
print(result_data.head())
print(type(result_data))
print('\n')


result_sr = data.pipe(missing_count)
print(result_sr.head())
print(type(result_sr))
print('\n')


result_value = data.pipe(total_number_missing)
print(result_value)
print(type(result_value))
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유