[Pandas] 특수문자 제거하기

반응형
    반응형

    정규표현식을 이용한 데이터프레임에서의 특수문자 제거하는 방법입니다.
    데이터프레임에 있는 내용에 특수문자와 섞여서 코딩작업을 하기가 어려울 때가 있습니다.
    이럴 때 특수문자만 제거를 한다면 작업을 하기 아주 편해질 것입니다.
    하지만 특수문자 제거하는 메쏘드는 따로 없기에 정규표현식을 이용해 특수문자를 찾고 제거하는 방식으로 해야합니다.
    다행히도 replace는 정규표현식을 인식할 수 있는 파라미터가 있어서 코딩은 그리 복잡하지는 않습니다.

     

    특수문자 제거하기

    먼저 아래와 같이 데이터프레임을 보면 특수문자가 있습니다.
    데이터프레임은 유튜브 코딩을 쳐서 나오는 처음 페이지의 제목을 크롤링했습니다.

    df

     

    데이터프레임에 정규표현식을 써야 하기 때문에 해당 항목을 문자열로 바꿔줘야 합니다. 그러기 위해서 데이터프레임에 있는 str 메쏘드를 쓰겠습니다. 컬럼.str을 해주면 컬럼 내용을 Series로 출력해줍니다.
    문자열처럼 인덱스 슬라이싱을 쓸 수 있고 컬럼 내용 전체가 인덱스에 따라 나오게 됩니다. 전체를 보려면 아래와 같이 인덱스를 설정합니다.

    df['제목'].str[0:]

     

    인덱스 설정을 하면 각 내용이 한개의 문자열이 나오기도 합니다.

    df['제목'].str[0]

     

    각 내용은 모두 문자열로 구성되어있습니다.

    df['제목'].str[0].loc[0]

    위 그림처럼 컬럼.str은 문자열이면서 동시에 Series입니다.
    따라서 replace를 적용이 가능합니다.

     

    파라미터는 다음과 같습니다.

     

    Series.str.replace(pat, repl, n=- 1, case=None, flags=0, regex=None)

     

    • pat : 찾고자 하는 문자열(str)이나 정규표현식 입력
    • repl : 대체할 문자 입력
    • n : int, 바꿀 갯수 설정 디폴트시 모든 경우 바꿈
    • case : 대소문자 구분할지 여부
      • True: 대소문자 구분
      • False : 대소문자 구분 안함
      • pat에 정규표현식일때는 셋팅이 불가능함(None으로 놓는다)
      • 디폴트 None
    • flags : int, 정규표현식 플래그 사용, 디폴트 0(no flags), pat이 정규표현식이면 사용할 수 없음
    • regex : 정규표현식인지 결정
      • True : 정규표현식
      • False : 문자열
      • pat이 정규표현식이나 repl이 callable한 것이면 False 불가능

     

    df에 적용하기 위해 특수문자만 나오게 하는 정규표현식인 ['^\w'] 을 pat에 입력하고 변환할 것은 공백이니 repl=r' '으로 빈칸으로 바꿉니다.


    pat 파라미터로 입력한 것이 정규표현식이라는 것을 인식시키기 위해 regex=True 를 입력합니다.

    df['제목']= df['제목'].str.replace(pat=r'[^\w]',repl=r' ',regex=True)
    df['제목']

    위와 같이 Playlist에 있던 대괄호를 포함해 여러 괄호들이 깔끔하게 없어진 것을 볼 수 있습니다.

    댓글

    Designed by JB FACTORY

    ....