pandas 원하는 데이터 찾기 ( contains(), endswith(). tolist(), values ) + 서울에는 종합 병원이 얼마나 있을까?
안녕하세요
이번에는 pandas 로 원하는 데이터를 찾아보겠습니다
먼저, 서울에는 종합병원이 얼마나 있을까? 라는 주제로 찾아볼까 합니다
그렇다면 두 개의 조건이 들어가야 하는데여
1. 서울에 있어야 한다
2. 종합병원이어야 한다
그럼 어떻게 찾아야 할까여?
연산자를 이용해서 찾아봅니다. 중요한 거는 pandas 는 "AND" 를 사용할 수 없고 연산자(&)를 사용해야 합니다
총 91 개가 존재하는군요!
근데 저기에는 저희가 원하는 값만 존재하는 건 아닌데요. 전체 이름을 보기 위해 상호명만 불러옵니다
잘 보면 "꽃배달", "장례식장" "클리닉" "어린이집" 등등. 종합병원이라 볼 수 없는 상호명이 존재하네요!
어떻게 찾아볼까요?? 굉장히 간단합니다
상호명의 문자열 중에 "꽃배달", "장례식장" 등등 이 들어가는 애들만 찾아오면 되겠죠?? 이걸 영어로 그대로 옮깁니다
str.contains() 란 상호명에 있는 문자열 중에 contains() 안에 들어가 있는 애들을 찾아옵니다. '|' 연산자를 사용하여 여러 개의 값을 한 번에 가져올 수 있습니다. 띄어쓰기에 유의 하서야 합니다 띄어쓰기도 하나의 문자로 간주하기 때문입니다
이제 저희는 drop() 을 사용해서 삭제해야 하는데 drop 은 list 로 넘겨줘야 합니다. 그러기 위해서 해당하는 값들을 list 로 바꿔 줍니다. 이번에도 역시 영어로 그대로 옮깁니다
index 를 list 로 바꿔라 입니다. list 로 바뀐 게 보이시죠??
이제 삭제하면 되는데 생각해보니 "의원" 도 종합병원이라 할 수 없을 거 같습니다. 물론 위에서 contains() 안에 추가해도 되지만 좀 다른 방식으로 해보겠습니다. 실력 향상이 목표니까요!
이번에는 contains() 가 아니라 endswith() 라는 걸 사용해 보겠습니다
무슨 의미일까요?? "의원" 으로 끝나는 애들을 가져오란 말입니다!. 그럼 우린 총 2개의 list 가 생겼는데 drop 을 한 번만 사용하기 위해 두 개의 list 를 합쳐 줍니다
+ 를 사용하여 합쳐줬는데요. 이런 의문이 드시는 분도 계실 겁니다. 저도 그랬는데요. append() 를 사용하면 안 되나??
append() 를 사용하면 [ 1,2,3,4 [5,6,7] ] 이런 식으로 됩니다. 즉, list 안에 list 가 들어가게 됩니다
그럼 이제 삭제를 해보겠습니다
저희는 index 를 기준으로 잡았기 때문에 axis 를 따로 선언하지 않았습니다. 시작은 91 개로 시작해서 정제해보니 55 개가 남았네요. 서울에는 종합병원이 55개가 있다고 볼 수 있습니다. 사람마다 기준이 다르니 참고하시기 바랍니다!
감사합니다!