-
[pandas] replace 로 값 한꺼번에 바꾸기 ( replace with dictionary, regex)데이터분석 2022. 8. 10. 14:53
전처리해야할 열에 바꿀 단어들을 맵핑해 한번에 replace하고 싶을 경우 아래와 같은 순서로 코드 작성하면 됨
1. 바꿀 단어들을 {'before' : 'after' }와 같이 딕셔너리 형태로 작성
2. replace함수에 {"바꿀열이름": 바꿀단어딕셔너리} 를 인자로 작성
print('변경 전 : ',carc['Doors'].unique()) # 변경 전 : ['04-May' '02-Mar' '>5'] replace_dict = {"04-May" : '04-05', "02-Mar" : '02-03'} carc = carc.replace({"Doors": replace_dict}) print('변경 후 : ',carc['Doors'].unique()) # 변경 후 : ['04-05' '02-03' '>5']
완전히 일치하는 단어를 다른 단어로 바꿀 경우에 replace - dictionary 조합을 많이 사용함.
dictionary라 여러개 열도 커버 가능
door_dict = {"04-May" : '04-05', "02-Mar" : '02-03'} leather_dict = {"Yes":0,"No":1} carc = carc.replace({"Doors": door_dict,"Leather interior":leather_dict})
3. 정규식 표현으로 부분 일치하는 값만 바꿔주기
Turbo와 km를 각각 공백으로 바꿔주고 싶을 때 다음과 같이 사용할 수 있음.
carc.replace(regex={r'Turbo$': '', r'km$': '',r'\s*':''},inplace=True)
알아두면 좋은 정규식 패턴 (https://docs.python.org/ko/3/howto/regex.html)
패턴 설명 예제 ^ 이 패턴으로 시작해야 함 ^xyz : 로 시작해야 함 (xyz1, xyzdd 등) $ 이 패턴으로 종료되어야 함 km$ : km로 종료되어야 함 (123km 등) \s 공백문자 \s* : 공백문자로 끝나야함 (123 ,gim ,)과 같이 \d 숫자 0 ~ 9 \d : 0 ~ 9 범위의 숫자 1개를 의미 (1, 9등) * 앞 패턴이 0개 이상이어야 함 \d* : 숫자가 없거나 하나 이상이어야 함 '데이터분석' 카테고리의 다른 글
[pandas] read_csv 화폐 단위 열 콤마(,) 제외하고 숫자로 읽어오기 (0) 2022.10.14 [pandas] read_csv 필요한 열만 읽기 usecols (0) 2022.10.13 윈도우 python 가상환경에 kaggle api 설치 (0) 2022.07.15 [pandas] pandas profiling on Google Colab (구글코랩에서 판다스 프로파일링 해보기) (0) 2022.07.14 [pandas] sort_values 이용해 열 기준 정렬 (0) 2021.02.16