Regular expression 을 의미한다
텍스트 내에서 문자열의 패턴을 찾기 위해 사용되는 일련의 문자와 특수문자의 조합
장점
•
수동으로 검사하기 어려운 대량의 텍스트 데이터를 빠르게 처리할 수 있음
•
다양한 문자열 패턴과 조건을 간단한 식으로 표현할 수 있어서 데이터를 매우 유연하게 다룰 수 있음
•
정규표현식 문법은 언어마다 거의 동일해서 다른 프로그래밍 언어에서도 활용 가능
단점
•
복잡하거나 비효율적으로 작성된 정규식은 성능 저하를 유발할 수 있음
•
정규 표현식 대신 간단한 문자열 처리 함수를 사용하는 게 더 효율적일 수 있음
메타 문자
정규 표현식에서 특별한 의미를 갖는 문자들
데이터를 검색하고 패턴을 정의하는 데 사용됨
종류
특수 시퀀스와 반복자 이해하기
특수 시퀀스
반복자
r : raw string 꼭 사용하기
캡처 그룹
•
str.contains()
# 위의 pattern 을 데이터프레임의 문자형 변수에 전처리나 추출과정에서 사용해보는 예시다
pattern = r'안전'
train['법규위반_안전'] = train['법규위반'].str.contains(pattern)
Python
복사
•
str.replace()
특수 문자를 제거하거나, 텍스트의 형식을 맞추고자 할 때 사용한다.
즉, 텍스트 데이터의 일관성을 맞추기 위해 사용된다.
# str.replace 함수를 사용해서 특정 컬럼의 값에서 일부분만 남겨 저장해보자.\
# pattern을 공백으로 처리해서 앞부분만 추출했다.
pattern = r'\s-\s.*'
train['도로형태_대분류'] = train['도로형태'].str.replace(pattern,'',regex=True)
Python
복사
•
str.extract()
특정열에서 지정한 패턴에 해당하는 값이 일치하는 부분을 추출. 일치하는 부분이 없을 경우, 결측값을 반환
# str.extract() 함수를 사용해서 특정 컬럼의 값에 패턴이 일치하는 값을 추출하여 새로운 열에 지정. 없을 경우, 결측값으로 반환
pattern = r'(남구|달서구)'
# 남구 또는 달서구를 추출하고, 해당되지 않는 경우 '기타' 로 표시
train['시군구_특정'] = train['시군구'].str.extract(pattern)
train['시군구_특정'] = train['시군구_특정'].fillna('기타')
Python
복사
•
특수 시퀀스, 반복자를 이용해서 시간대 분석하기
◦
캡처 그룹 () 을 활용해서 별도의 컬럼을 생성할 수 있다.
◦
\d{n} : n자리 숫자를 찾는데 사용된다.
# 패턴과 캡처 그룹으로 연,월,일,시간 변수를 만들어낼 수 있다.
time_pattern = r'(\d{4})-(\d{2})-(\d{2}) (\d{2})'
train[['연', '월', '일', '시간']] = train['사고일시'].str.extract(time_pattern)
display(train.head(3))
Python
복사