본문 바로가기
데이터분석/Pandas&Numpy

pandas apply 메서드 사용해보기

by ADELA_J 2023. 7. 5.

이번에는 해당 데이터 프레임으로 연습

 

1. a열을 제곱하게 되면 이런 결과값이 나옴

2. 제곱함수 my_sq을 만들어두고 이를 apply메서드 인자에 전달한다면 시리즈의 모든 데이터가 함수가 적용됨.

참고로 my_sq가 인자 1개만 받도록 함수를 만들어놨으니까 인자값을 1개만 받도록 해야함.

3. 만약 2개의 인자를 전달받는다면 2개의 인자를 전달해야함.

 ▶ 이를 통해 apply 메서드에 전달하는 함수의 첫 번째 인자는 데이터프레임이나 시리즈가 자동으로 전달되는걸 알수 있음.

 

2. 데이터프레임을 만들어서 apply메서드에 적용할 때는 axis 인자값을 0이나 1로 지정해서 함수를 열 또는 행방향으로 적용할 수 있음.

3. 그리고 3개의 인자를 입력받아 평균을 계산하는 함수를 만들고 데이터프레임에 적용시켜보면

TypeError: avg_3() missing 2 required positional arguments: 'y' and 'z'

라는 오류메세지가 출력된다. 이는 열 단위 데이터가 전달되었고 (a나 b), 그러니까 값으로 출력된게 아니라 축으로 전달된거. 그래서 열 단위로 데이터를 처리할 수 있도록 수정해야함. 

이렇게 반복문을 써서 할 수도 있다.

4. 행 방향으로 할거면 shape[1]로 바꿔서 하면됨.

 

< 좀 더 많은 데이터로 apply 메서드 사용해보기 >

이번에 사용해볼 데이터는 seaborn에 있는 titanic 데이터  (씨본에도 있구나..ㅎ)

 

1. 누락값의 개수를 반환하는 count_missing 함수를 만들어봄. 판다스의 isnull 메서드는 누락값의 유무에 따라 True와 False를 적용한 데이터 프레임이 만들어짐.

pd.isnull 메서드를 쓰면 이렇게 만들어짐.

 

그래서 넘파이의 sum 메서드를 전달해서 true값을 더해 누락값의 개수를 구할 수 있음. 

2. 그리고 누락값의 비율을 계산하기 위한 prop_missing 함수를 만들기. count_missing 함수를 이용해 누락값 개수를 구하고 size 속성을 이용해 전체 데이터 수를 구해서 나누어서 출력함

 

누락값 비율이 아닌 데이터의 비율을 구하려면 prop_complete라는 함수를 만들어서 누락값의 비율을 빼서 값을 구할 수도 있음. 

행 방향으로 적용해서 실행하려면 다음과 같이 axis = 1 로 인자값을 주면됨.

 

그리고 누락값의 개수를 구해서 데이터프레임에 num_missing이라는 새로운 열을 추가해줄 수도 있다.

 

3. 그러면 num_missing 열을 사용해서 누락값이 2개 이상인 데이터도 추출해낼 수 있다.