파이썬(Python)&판다스(Pandas)&Polars 25

[Pandas] 서로 다른 데이터프레임에서 특정 값을 매핑해 새로운 컬럼 만들기

기관코드와 전체기관명으로 구성된 df1 소관기관 컬럼에 전체기관명만 있는 df2 두 개의 데이터 프레임을 합쳐서 하나로 병합하고 싶다면, pd.merge 함수를 쓰면 된다. 하지만, merge 함수 만으로는 경찰관, 교육부가 입력된 셀은 매핑될 수 없다. 이 문제를 해결하기 위해 아래와 같은 코드를 작성하였다. # 기관코드 merge new_df = pd.merge(df2, df1, how="left", left_on="소관기관", right_on="전체기관명") new_df.replace({np.nan: None}, inplace=True) # 소관기관이 여러개 인 경우가 있음 for idx, row in new_df.iterrows(): if row['소관기관'] != None and ..

[Pandas] combine_first - 두 컬럼 중 먼저 나온 값을 기준으로 새로운 컬럼 생성하기

아래 구조와 같이 col1, col2 중 먼저 나오는 데이터를 기준으로 새로운 컬럼을 만들어야하는 경우가 있다. 이때는 'combine_first'를 사용하면 만들 수 있다. import pandas as pd #둘 중 하나에 값이 있으면 합치기 df['new_col'] = df['col1'].combine_first(df['col2']) df.drop([['col1','col2]], axis=1, inplace=True) # 필요없는 컬럼은 삭제 참고 블로그 - https://wikidocs.net/153673 08-02. 다른 객체로 결측치 덮어쓰기 (combine_first) ####DataFrame.combine_first(other) ##개요 `combine_first` 메서드는 `other`의..

[Pandas] literal_eval - 문자열 리스트를 list type으로 변환하기

데이터 프레임을 다룰 때, 특정 컬럼의 형태가 아래 그림과 같이 형성된 경우가 있다. 하나의 셀에 리스트 형태로 들어있는 문자열이 있으면, type이 str로 인식하기 때문에 이 컬럼을 for문 등의 조건문을 사용할 수 없다. 이를 해결하기 위한 방법으로 ast.literal_eval 함수를 사용할 수 있다. 하나의 문자열만 해결하는 것 보단, 데이터프레임 수준에서 적용할 수 있는 코드를 공유하고자 한다. 데이터프레임의 특정 컬럼의 모든 셀을 한번에 변환하기 위해선, 예외 처리를 포함한 함수를 만들어 lambda를 적용하는 것이 좋다. 아래 코드는, str_to_list(x) 함수를 만들었고, 특정 컬럼에 apply와 lambda를 사용했다. import pandas as pd from ast impor..

[Pandas] 한글 깨짐 방지를 위해 인코딩은 'UTF-8-SIG'로 저장하기

pandas를 사용한지 2년이 넘었지만, 사소한 부분에서 모르고 넘어간 부분이 많았다. 한글 인코딩은 'utf-8' 또는 'cp949'로 저장된 데이터가 많은것은 알고있었지만, 흔히 'utf-8'로 저장한 csv나 excel 파일을 열면 한글 깨짐의 상태로 열린다. MS excel 365에서 깨지지 않게 보기 위해선 '데이터 > 데이터 가져오기 > 파일에서 > 텍스트/csv에서'를 클릭해 불러오고자하는 데이터를 선택하면 된다. 그 동안 이 방법으로 번거롭게 열었는데, 최근 'UTF-8-SIG'로 저장하면 파일형식간의 호환을 지원해주어 깨지지않고 바로 열 수 있다는 걸 알게 됐다. import pandas as pd # 데이터 프레임 만들기 df = pd.DataFrame(data=sample_data) ..

[Pandas] '', NaN 값을 None으로 변환하기

데이터 전처리를 위해서, 조건절에서 None을 기준으로 데이터를 판단하는 경우가 많다. 하지만, Pandas로 데이터프레임을 불러오는 과정에서 Null 값의 처리가 제대로 되지않으면 원하는 결과를 낼 수 없다. 보통 np.NaN 또는 None을 기준으로 null 값 처리하기 때문에 이 글은 None값 처리를 하는 코드의 예시이다. import pandas as pd import numpy as np # 데이터 불러오기 path = r'파일경로' df = pd.read_csv(path,keep_default_na=False, # 빈 값은 None값으로 불러오기 na_values = ['?', '??', 'N/A', 'NA', 'nan', 'NaN', '-nan', '-NaN', 'null','None', ..