본문 바로가기

데이터분석/pandas

pandas 개념2 불린 추출과 중복값 처리(drop_duplicated)

이번 시간에는 불린 추출과 중복값 처리를 다뤄 보겠습니다.

 

pandas cheet sheet1 의 Subset Observations(Rows)를 중심으로 다루어보겠습니다. 

 

먼저 불린 추출의 경우 

 

dataframe이름[ dataframe이름['칼럼 이름 ']   조건 연산 ]   의 형태로 인덱싱을 하면 되는데요.

 

예를 들겠습니다.

 

위처럼 데이터프레임을 하나 만들어 주겠습니다.

 

대괄호 안에 데이터프레임 이름과 칼럼명 그리고 조건 연산자를 넣어주면 (크거나 같거나 등등) 그에 조건이 true 인 로우만

보여주는 것을 볼 수 있습니다. 

 

좀 더 보겠습니다.

 

'Do it 데이터분석을 위한 판다스 입문' 책에서 가져온 데이터입니다. 불린 추출을 위처럼 해주면 됩니다.

위에서는 나이가 평균 이상인 과학자들만 보여달라는 불린 추출입니다. 

 

대괄호 안에 칼럼을 써도 되고 .(dot)을 쓰고 칼럼 이름을 써주는 것도 가능합니다. 편하신 방법으로 하면 됩니다. 

항상 데이터 프레임 칼럼 이름대로 대소문자를 맞춰주는 것은 기본입니다. 

 

추가적으로 해당 칼럼에서 null 값이거나 null값이 아닌 로우만 찾고 싶을 때가 있습니다. 

 

위의 데이터셋에서는 Null값이 없는 것을 확인할 수 있는데요. 칼럼이름을 쓴 뒤에 notnull() 과 isnull() 을 통해서 해당 칼럼에서 null인 것과 null이 아닌 값을 찾아볼 수 있습니다. 

 

중복값 처리 

먼저 중복값이 있는지 여부를 알아야합니다. 

 

중복 여부의 확인: DataFrame.duplicated()  

을 이용하면 됩니다. 

duplicated 메서드를 사용하면 해당 칼럼을 기준으로 뒤에 로우가 true로 반환됨을 확인할 수 있습니다. 

keep 옵션이 first 로 default 되어있습니다. 이에 대한 의미는 2개의 중복이 되는 로우 중에 선행되는 (=위에 있는 로우)는 false 이상없음으로 보고 그 다음에 오는 로우가 중복되었다(=true)고 판단 하겠다 라는 의미입니다. 

 

이번엔 2개의 칼럼을 duplicated 메서드 안에 넣었습니다. 이럴 경우 두 개의 열이 모두 똑같아야 true로 반환됩니다. 그리고 keep 옵션을 false로 두면 중복되는 로우 모두를 true로 반환합니다. 

 

예시를 좀 더 보겠습니다.

 

빌보드 데이터셋을 가지고 왔습니다. 노래제목으로 불린 추출을 했는데 중복 되는 값이 많다는 것을 확인할 수 있습니다.

 

칼럼을 4개만 추출해서 데이터프레임을 조금 더 간소화 시켜보았습니다. 그리고 중복값을 duplicated 메서드를 사용해서 살펴보았습니다. 23775개 로우가 중복이라고 나오네요. 

이를 drop_duplicates() 을 이용해서 제거했습니다. 메서드 안에 특정 칼럼 이름을 넣지 않으면 칼럼 전부를 기준으로 drop_duplicates 해줍니다. 위 코드를 보시면 메서드 안에 아무것도 없는 것과 모든 칼럼 이름을 리스트로 넣어준 것이 결과가 동일한 갯수로 나오는 것을 확인할 수 있습니다. 

 

특정 칼럼을 기준으로 중복값을 drop 시키고 싶다면 위처럼 코드를 넣어주면 됩니다. 

 

이번 시간에는 간단하게 불린 추출과 중복값을 처리하는 메서드를 다루어 보았습니다. 중간에 다룬 예제를 보시면 저번에 언급한 'do it 데이터 분석을 위한 판다스 입문' 책에서 예제와 내용을 조금 참고했습니다., 다른 예제는 pandas cheet sheet 1 제일 왼쪽에 나온 Dataframe을 조금씩 수정하여서 진행하였습니다. 

 

이번 포스팅은 여기서 마치겠습니다. 감사합니다.