행에 관련하여 함수를 처리할 때는 apply() 메소드를 사용했다. 사용방법이 독특해서 이를 깊이 이해하려 한다.
우선 apply() 메소드는 Pandas의 DataFrame 또는 Series에 함수를 적용할 때 사용하는 메소드다. 즉, 이 메소드를 사용하면 DataFrame의 각 행이나 열에 대해 지정된 함수를 실행할 수 있다.
def fill_age(row):
if pd.isna(row['Age']):
return median_ages[row['Pclass'], row['Sex']]
else:
return row['Age']
train_data['Age'] = train_data.apply(fill_age, axis=1)
데이터 분석을 할 때 위와 같이 사용했다. fill_age 함수는 행의 Age가 결측치인지 확인한다. 그런 다음 결측치면, 현재 행의 Pclass와 Sex를 기준으로 median_ages의 값을 반환하는 함수다.
접기/펼치기Pandas에서 제공하는 함수로, 데이터 프레임이나 시리즈의 각 요소가 결측치인지 여부를 나타내는 불린(참/거짓) 값을 반환
apply() 메소드의 속성으로
0 : Index(행)
1 : columns(열)
함수를 적용할 축 입니다.
순서는 다음과 같이 이루어진다.
- apply() 메소드 진입
- fill_age 함수 진입
- 해당 행의 'Age' 값이 결측치인지 확인.
- 결측치가 아니면 그대로 반환, 결측치면 해당 행의 Pclass와 Sex를 기준으로 median_ages에 일치하는 값을 반환
- 행에 적용
이렇게 진행된다. 이를 가능하게 해주는 것이 apply() 메소드다. apply() 메소드 안에서 내부적으로 반복문이 돈다고 이해하면 좋다.