판다스의 .str.contains()와 .isin() 비교

소환인·2023년 12월 12일
0

스터디노트

목록 보기
36/48

판다스의 .str.contains().isin() 메소드는 특정값의 포함여부를 확인할 때 사용합니다. 막연하게 느낌만 가지고 사용하고 있어서 사용할 때마다 조금씩 헷갈리는 부분이 있어서 정리해보려고 합니다.

.str.contains()와 SQL의 LIKE 구문

.str.contains() 메소드는 문자열 열에서 정규 표현식 또는 단순 문자열의 포함 여부를 확인하는 데 사용됩니다. 이는 SQL의 LIKE '%문자열%' 구문과 유사합니다.

.str.contains()

.str.contains() 메소드는 문자열 데이터를 다룰 때 사용됩니다. 이 메소드는 문자열 열에 특정 단어나 패턴이 포함되어 있는지 확인하는 데 유용합니다. .str.contains()는 정규 표현식을 지원하기 때문에, 단순한 문자열 뿐만 아니라 복잡한 패턴 매칭도 가능합니다.

예를 들어, '열이름'이라는 열에 '특정 단어'가 포함된 모든 행을 찾으려면,

df['열이름'].str.contains('특정 단어')

이 메소드는 대소문자를 구분합니다. 대소문자를 구분하지 않으려면, 정규 표현식의 플래그를 사용하여 대소문자를 구분하지 않는 검색을 할 수 있습니다.

df['열이름'].str.contains('특정 단어', case=False)

정규 표현식을 사용하면 더 복잡한 패턴도 찾을 수 있습니다. 예를 들어, '문자열1' 또는 '문자열2'를 포함하는 모든 행을 찾으려면 다음과 같이 작성합니다.

df['열이름'].str.contains('문자열1|문자열2')

SQL의 LIKE 구문

SQL의 LIKE 구문은 문자열 패턴 매칭을 위해 사용됩니다. LIKE 구문은 주로 %_ 두 가지 와일드카드 문자와 함께 사용됩니다. %는 0개 이상의 임의의 문자들을 대체하고, _는 정확히 하나의 임의 문자를 대체합니다.

예를 들어, 특정 열이 '특정 단어'를 포함하는 모든 행을 선택하려면

SELECT * FROM 테이블 WHERE 열이름 LIKE '%특정 단어%'

여기서 %특정 단어%는 '특정 단어'를 어디든 포함하는 문자열과 일치합니다. SQL의 LIKE 구문은 기본적으로 대소문자를 구분하지 않습니다.

비교

.str.contains()와 SQL의 LIKE 구문 모두 문자열에서 특정 패턴이나 단어를 찾는 데 사용되지만, .str.contains()는 정규 표현식을 사용할 수 있는 반면, SQL의 LIKE%_ 와일드카드를 사용합니다. 또한, .str.contains()는 대소문자를 구분할 수 있는 옵션을 제공합니다.

.isin()과 SQL의 IN 구문

.isin() 메소드는 열의 각 요소가 주어진 값 리스트에 포함되는지 여부를 확인하는 데 사용됩니다. 이는 SQL의 IN 구문과 유사합니다.

.isin()

.isin() 메소드는 특정 열의 값이 주어진 값의 목록에 포함되는지 여부를 확인하는 데 사용됩니다. 이 메소드는 데이터 프레임 또는 시리즈의 각 요소가 주어진 값 리스트 중 하나와 일치하는지를 불리언 형태로 반환합니다.

예를 들어, '열이름'이라는 열에서 '값1', '값2', '값3' 중 하나와 일치하는 모든 행을 찾으려면

df['열이름'].isin(['값1', '값2', '값3'])

.isin() 메소드는 모든 종류의 데이터 타입에 사용될 수 있으며, 주어진 리스트에 정확하게 일치하는 값을 찾습니다. 이 메소드는 문자열, 숫자, 날짜 등 다양한 데이터 타입의 값을 처리할 수 있습니다.

또한, .isin()은 하나의 값만 검사할 때도 리스트 형태로 값을 제공해야 합니다. 예를 들어, '값1'만 검사하려면

df['열이름'].isin(['값1'])

SQL의 IN 구문

SQL의 IN 구문은 데이터베이스 테이블에서 특정 열의 값이 주어진 값 목록 중 하나와 일치하는 모든 행을 선택하는 데 사용됩니다. 이 구문은 여러 값 중 하나와의 일치를 확인하며, 주로 SELECT 문 내에서 사용됩니다.

예를 들어, 특정 열이 '값1', '값2', '값3' 중 하나와 일치하는 모든 행을 선택하려면

SELECT * FROM 테이블 WHERE 열이름 IN ('값1', '값2', '값3')

비교

.isin()과 SQL의 IN 구문은 모두 특정 값의 집합에 속하는 항목을 필터링하는 데 사용됩니다. 두 메소드 모두 주어진 값 목록과 정확한 일치를 찾으며, 다양한 데이터 타입을 처리할 수 있습니다. .isin()은 판다스에서 사용되며, SQL의 IN 구문은 데이터베이스 쿼리에서 사용되어 특정 조건에 맞는 데이터를 추출하는 데 적합합니다.

두 메소드의 주요 차이점

물론입니다. .str.contains().isin() 메소드의 주요 차이점에 대해 더 자세히 설명해 드리겠습니다.

.str.contains()

  1. .str.contains()는 문자열 데이터를 검색하고 처리하는 데 특화되어 있습니다. 이 메소드는 텍스트 데이터에서 특정 단어나 패턴을 찾는 데 사용됩니다.

  2. .str.contains()는 정규 표현식을 지원합니다. 이는 복잡한 텍스트 패턴을 찾을 수 있게 해줍니다. 예를 들어, 다양한 형태의 이메일 주소나 전화번호 패턴을 찾는 데 유용합니다.

  3. 이 메소드는 텍스트 내에서 부분적 일치를 찾을 수 있어, 특정 단어나 문구가 어디에 위치하든 간에 검출할 수 있습니다.

.isin()

  1. .isin() 메소드는 문자열 뿐만 아니라 숫자, 날짜 등 다양한 데이터 타입에도 적용할 수 있습니다. 이는 열의 값이 특정 리스트에 있는지 확인할 때 유용합니다.

  2. .isin()은 주어진 리스트에 있는 값과 정확히 일치하는 요소를 찾습니다. 부분적 일치나 패턴 일치는 검사하지 않습니다.

  3. 특정 값 집합에 속하는 데이터 필터링: .isin()은 주어진 값의 집합(리스트)에 속하는 데이터를 선택하는 데 사용됩니다. 예를 들어, 특정 카테고리에 속하는 항목들을 선택할 때 사용할 수 있습니다.

요약

  • .str.contains()는 문자열 데이터에서 유연한 검색과 복잡한 패턴 매칭을 가능하게 합니다.
  • .isin()은 다양한 데이터 타입에 적용되며, 엄격한 값 일치를 검사하는 데 사용됩니다.
profile
돌고돌아

0개의 댓글