Hey Tech
[Python] pandas 데이터프레임 문자열 바꾸기(replace, str.replace 함수) 본문
[Python] pandas 데이터프레임 문자열 바꾸기(replace, str.replace 함수)
Tony Park (토니) 2022. 8. 9. 20:59📌 Text 빅데이터분석 플랫폼 베타테스트 참가자 모집 중!(네이버페이 4만 원 전원 지급)
👋 안녕하세요, 코딩이 필요 없는 AI/빅데이터 분석 All in One 플랫폼 <DATA101> 개발팀입니다.
😊 저희 서비스를 사용해 보시고 경험담을 들려주세요 :)
💸 참여해 주신 "모든" 분들께 네이버페이 4만 원 쿠폰을 지급해 드립니다.
👨💻 참여 희망 시 카톡플러스친구 1:1 채팅 or 인스타그램 DM 부탁드립니다 :)
📆 참여기간 : 11/25(월)~11/29(금) 11:00~21:00 중 택1 (1시간 1타임)
👉 참여장소 : 강남역 인근 스터디카페 미팅Room
📍 소요시간 : 총 40분 내외(서비스 체험 및 인터뷰 포함)
✅ 참가조건 : Text 빅데이터 분석 업무 경험자
👉 참가 가능일정 조회하기 : https://url.kr/n8k8gu
- 카톡플친 : http://pf.kakao.com/_SxltHG/chat
- 인스타그램 : https://www.instagram.com/data101.official/
💡 들어가며
데이터프레임 내 문자열 한 글자까지 완벽하게 일치하는 원소를 찾는지 혹은 일부 글자라도 일치하는 원소를 찾을지에 따라 사용해야 할 함수가 나뉩니다(아래 표 참고).
No. | 함수 | 활용방안 |
1 | replace() | 완벽하게 일치하는 단어를 찾아 바꾸는 경우 |
2 | str.replace() | 일부 단어라도 일치하는 단어를 찾아 바꾸는 경우 |
함수별로 각각 자세히 알아봅니다.
📚 목차
1. replace 함수
1) 기본 사용방법
2) 여러 문자열 동시 변경
3) 특정 칼럼 데이터 변경
4) 원본 데이터 변경옵션(inplace)
2. str.replace 함수
1) 기본 사용방법
내장 함수 replace는 데이터프레임 내 특정 문자열과 완벽하게 일치하는 데이터를 모두 찾아 변경합니다.
df.replace('현재 문자열', '대체 문자열')
아래와 같은 데이터프레임이 있을 때, '정상'이라는 단어를 '양품'이라고 바꿔보겠습니다.
DATASET_RAW.replace('정상', '양품')
replace 함수는 아래와 같이 문자열을 변경한 데이터프레임을 반환합니다.
2) 여러 문자열 동시 변경
중괄호에 Key-Value 형태로 바꿀 문자열 여러 세트를 입력하면 코드 한 줄로 원하는 문자열을 한꺼번에 바꿀 수 있습니다.
DATASET_RAW.replace({'정상':'양품', 'X1':'T1'})
(1) 변경 전
(2) 변경 후
3) 특정 칼럼 데이터 변경
replace 함수는 칼럼을 지정하지 않으면 데이터프레임 내 일치하는 모든 데이터를 변경합니다. 아래와 같은 방법을 활용하면 원하는 칼럼의 데이터만 변경할 수 있습니다.
데이터프레임.replace({'칼럼이름': {'찾을 문자열': '대체 문자열'}}
결과는 생략하겠습니다.
4) 원본 데이터 변경옵션(inplace)
(4-1) inplace = False
inplace 옵션은 기본적으로 False로서 원본 데이터를 변경하지 않습니다.
DATASET_RAW.replace('정상', '양품')
앞서 위와 같은 코드로 단어를 바꿨지만, 실제로 원본 데이터를 출력하면 아래와 같이 변경된 데이터가 적용되지 않은 것을 확인할 수 있습니다.
즉, 문자열이 변경된 데이터프레임을 새로운 변수에 할당해야 사용이 가능합니다.
(4-2) inplace = True
반면, inplace 옵션이 True일 경우 원본 데이터에 replace 함수의 반환 값이 반영됩니다.
DATASET_RAW.replace('정상', '양품', inplace = True)
출력 결과는 생략하겠습니다.
5) replace 함수의 한계점
replace 함수는 문자열이 완벽하게 일치할 때만 데이터를 변경합니다. 예를 들어, replace 함수를 활용하여 아래와 같이 '공장'이라는 단어를 '라인'으로 바꿔보겠습니다.
(1) 변경 전
(2) 변경 후
위와 같이, 단어가 바꾸지 않는 것을 확인할 수 있습니다. replace 함수는 '완벽하게' 일치하는 문자열만 변경하기 때문입니다. 즉, 원소마다 '공장'이라는 단어 앞에 1, 2, 3과 같은 다른 문자열이 포함되어 있기 때문에, 해당 원소는 '공장'과 다르다고 판단하여 데이터를 변경하지 않는 것입니다. 이처럼, 일부 단어라도 일치하는 원소라면 값을 바꾸는 방법은 다음 섹션에서 다루는 str.replace 함수입니다.
2. str.replace 함수
str.replace 함수는 replace 함수와 다르게, 찾으려는 문자열 일부만 있더라도 데이터를 변경하는 특징이 있습니다. 아래와 같은 포맷으로 코드를 작성하면 됩니다.
데이터프레임['칼럼명'].str.replace('찾을 문자열', '대체 문자열')
실제 코드
DATASET_RAW['FACTORY_NUM'] = DATASET_RAW['FACTORY_NUM'].str.replace('공장', '라인')
DATASET_RAW
변경 후
포스팅 내용에 오류가 있다면 아래에 👇👇👇 댓글 남겨주시면 감사드리겠습니다.
그럼 오늘도 즐겁고 건강한 하루 보내시길 바랍니다 :)
고맙습니다.
'AI & 빅데이터 > 데이터 분석(Python)' 카테고리의 다른 글
[Python] 숫자형/문자열 데이터를 날짜형으로 바꾸기(pd.to_datetime) (0) | 2022.08.16 |
---|---|
[Python] Numpy 기반 특정 조건의 데이터 찾기/바꾸기(One-hot Encoding) (0) | 2022.08.10 |
[Python] 현재 날짜, 시간 구하기(연, 월, 일, 시, 분, 초) (0) | 2022.06.23 |
[Python] 결측치(NaN) 확인 및 제거 방법 (0) | 2022.06.01 |
[Python] 'Unnamed: 0" 없이 엑셀 파일 읽어오기 (0) | 2022.02.06 |