• 카테고리

    질문 & 답변
  • 세부 분야

    데이터 분석

  • 해결 여부

    미해결

'상호명이 '파스쿠찌|잠바주스'가 아닌 것만 가져오세요.'에 궁금한 점이 있습니다.

20.08.16 18:12 작성 조회수 147

1

안녕하세요, 선생님. 강의 잘 듣고 있습다.

복습하다 중간에 궁금한 점이 생겨 질문드립니다,

03_frainchise_eda_input 파일에서요.

# "상권업종대분류명"이 "학문/교육"이 아닌 것만 가져옵니다. 에서는 아래처럼 작성을 하는 것으로 배웠습니다.

df_bread = df_bread[df_bread['상권업종대분류명'] != '학문/교육'].copy()

그리고 아래의 문항 중 # 상호명이 '파스쿠찌|잠바주스'가 아닌 것만 가져오세요. 에서

df_bread[~df_bread['상호명'].str.contains('파스쿠찌|잠바주스')]로  알려주셨는데요.

이것의 shape을 찍어보면 (812, 12)가 오는데 아래처럼

df_bread[df_bread['상호명'] != '파스쿠찌|잠바주스']로 했을 때 는 (823, 12)로 row의 개수가 달라서 왜 다른지 궁금하여 문의드립니다.

저는 두 개의 row 개수가 같을 거라고 생각을 했는데 달라서 어떻게 다른 것인지 궁금합니다.

항상 좋은 강의 감사드립니다 :)

답변 3

·

답변을 작성해보세요.

1

김아람님의 프로필

김아람

질문자

2020.08.17

안녕하세요, 선생님!

잘 이해가 되었습니다. 상세한 설명 감사드립니다 :)

1

안녕하세요.

좋은 질문을 해주셨네요.

== 연산은 완전히 일치하는 데이터를 가져오게 됩니다. 

아래 파스쿠찌와 잠바주스가 들어간 상호명을 가져오게 했는데요.

"파스쿠찌", "잠바주스" 라고 표기되지 않고 "파리크라상파스쿠찌홍" 등으로 표기된 것을 볼 수 있습니다.


.str.contains() 는 일부 텍스트가 일치하면 True로 연산을 하게 되고 다시 데이터프레임으로 감싸면 해당 데이터만 가져옵니다.

여기에서는 조건식 앞에 ~ 표시를 했기 때문에 해당 텍스트가 들어가지 않는 데이터만 가져왔습니다.

그래서 == 연산 혹은 != 연산을 사용할 때는 내부에 | 를 적어주게 되면 정규표현식의 or 로 인식하지 않고 문자 그대로  | 로 해석하게 됩니다.

감사합니다 :)

0

감사합니다 :)