Dataframe을 사용하여 데이터 전처리를 하다 보면, 기존 데이터를 수정해야 하는 상황이 많이 발생한다.
그중에서도 SQL Query문을 사용하듯이 특정 동작을 수행해야 하는 경우가 있는데,
예시 테이블과 같이 "Col_2"의 컬럼의 String 값들중 특정 문자들만 변경해주려고한다.
물론 그냥 직접
df['Col_2'].str.replace('U.S.A','US')
이런식으로 일일히 바꾸어도 시간이 걸린뿐 동일한 동작은 가능할 것이다.
하지만 만약에 위와 같은 국가의 갯수가 100개가 넘는다면?
그리고 같은 국가명인데 세부정보가 다른경우가 있다면?
ex) Japen (English) / Japen (Franch)
만약, 나중에 추가되는 데이터의 국가명이 기존과 다르게 변경된다면?
U.S.A -> United States Of America
아주 골치가 아파질것이다.
이를 관리하기위해 아래와 같이 별도의 Dataframe을 만들었다고 하자.
방법은 간단하다.
1)
main=pd.read_csv('Sample_1.csv')
country_info=pd.read_csv('Country.csv')
2) 먼저 Dataframe을 Dict형식으로 변환해줘야한다.
country_info=country_info.set_index('Country').to_dict()
country_info=country_info['Subsidiary']
결과 -> { 'United Kingdom':'UK', 'U.S.A':'US', 'South Korea':'ROK', 'Japen':'JP' }
이때 Col_2에서 동일값을 찾기위한 String이 반드시 Key값으로
해당 Key값으로 변경후의 값 부분을 Value값으로 해야한다.
3) main['Col_2'] = main['Col_2'].replace(country_info, regex=True)
결과를 보면 다음과 같이 변경될 것이다.
결과 예시)
이를 활용하면 대용량 데이터 전처리시에도 간편하게 수정이 가능하고,
데이터 자체의 수정이 발생하여도 빠르게 적용이 가능하다.
'프로그래밍 > Python' 카테고리의 다른 글
[jupyter notebook]requirement already satisfied no module named pip install python version (0) | 2022.11.25 |
---|---|
[jupyter notebook]kernel starting please wait, connection failed 에러 해결하기 (0) | 2022.10.04 |
[GCP]Bigquery 기존 데이터 업데이트/수정하기(Python) (0) | 2022.09.05 |
pyinstaller 용량 줄이기(순정 Python) (0) | 2022.08.17 |
[GCP]Bigquery로 Dataframe전달할때 GenericGBQException 에러해결하기 (0) | 2022.08.10 |