본문 바로가기
파이썬(Python)

[Python] 정규표현식을 통한 숫자형태 변환 replace 함수활용

by Serendipity_ 2022. 10. 4.
반응형

Python을 통한 전처리 방법 중 은근히 번거로웠던 방법이지만 정규표현식을 일부 활용하여 쉽게 하는 방법에 대해 알아보겠습니다.

 

1
2
3
4
5
6
import pandas as pd
 
df = pd.DataFrame({'사원' : ["기러기""토마토""스위스"],
             '8월 매출액' : ["3,235,600원""4,325,500원""2,323,500원"],
             '9월 매출액': ["3,235,600원""2,325,500원""4,323,500원"]})
df
cs

위와 같이 데이터를 불러오게 되면 아래와 같은 형태가 나타납니다.

raw데이터
데이터 로우

 

예를 들어 기러기 사원의 8월 매출액은 "3,235,600원" 이라고 나와있는데 3235600으로 변경하고 싶습니다.

Python의 경우 숫자와 문자열을 엄격히 구분하기 때문에 계산을 위해서는 변경해주어야 합니다.

 

문자열을 숫자로 변경하기 위해 2가지를 바꾸어야 합니다.

  • "원"을 없앤다
  • ","를 없앤다

엑셀에 익숙하신 분들은 두 번쨰 사항인 ","도 없애야 해?라고 생각하실 수 있습니다. ","까지 없어져야 형 변환이 가능합니다.

현재 데이터 타입은 다음과 같습니다.

 

데이터타입
데이터 타입

8월 매출액, 9월 매출액 모두 object 타입입니다. object 타입은 문자형입니다. 

 

 

01 일반적인 형변환 방법

 

1️⃣ "원"을 없애는 방법

1
df['8월 매출액'].str.replace("원""")
cs
replace함수_전처리
replace함수를 통해 "원"을 없앰

2️⃣ ","(컴마) 없애는 방법

1
df['8월 매출액'].str.replace(",""")
cs
replace함수_전처리
replace 함수를 통해 ","를 없앰

3️⃣ 둘 다 없애는 방법

method chaining(메서드 체이닝) 이라는 방법으로 사용하면 됩니다.

쉽게 말해서 함수 두 개를 연속해서 쓰는 것입니다.  

1
df['8월 매출액'].str.replace(",""").str.replace("원""").astype(int)
cs

마지막은 형 변환을 위해  astype(int)를 써줍니다. 

replace함수_전처리
replace함수를 통해 "원"과 "," 전처리, 숫자형태 형변환

 

02 정규표현식을 통한 형변환 방법

블로그의 핵심 ! 정규표현식을 통한 방법을 공개합니다.

1
df['8월 매출액'].str.replace("[^0-9]""", regex = True).astype(int)
cs
정규표현식_숫자변형
정규표현식을 통한 숫자변형
  • "[^0-9]" : 숫자가 아닌 것 을 모두 가져오라는 뜻입니다. 
  • regex = True 는 정규표현식을 쓰는 것을 의미합니다.

정규표현식을 할 경우 좋은 점은 데이터 프레임에도 적용이 간결합니다.

1
df[['8월 매출액'"9월 매출액"]].replace("[^0-9]""", regex = True).astype(int)
cs

데이터프레임_숫자변형
데이터프레임 숫자형으로 한번에 전처리

 

앞으로는 정규표현식을 통해 쉽고 간결하게 데이터 전처리를 해보시길 바랍니다.

 

반응형

댓글