전처리 | 이름 바꿀 때 <rename 함수>, 띄어쓰기 제거에는 <replace 함수>

소리·2023년 11월 20일
0

🤔 행 열 이름 바꿔야 할 때는

rename ()

  • 문법 : DataFrame.rename(mapper=None, index=None, columns=None, axis=None, copy=True, inplace=False, level=None, errors='ignore')

mapper : 변경할 {레이블명 : 값} 입니다. dict나 함수형태가 올 수 있는데, 축이 지정되어있지 않으므로 axis인수와 함께 사용해야 합니다.
axis : mapper의 변경값이 적용될 축 입니다.
index, columns : 변경할 {레이블명 : 값}입니다. 미리 축을 지정하기 때문에 axis인수와 병행사용할 수 없습니다.
copy : 사본을 생성할지 여부입니다.
inplace : Pandas 공통 인수인 inplace는 원본을 수정할지의 여부를 지정합니다.
level : Multi Index의 경우 레벨을 지정해줍니다.
errors : {'ignore' / 'raise'} mapper, index, columns에서 지정한 dict에 해당하는 key값이 없을경우, 오류를 발생시킬지 여부 입니다.

.
.
.
🤔 인덱스를 열로 변환할 때 (재설정하는 것 외에도!)

reset_index ()

  • 문법 : DataFrame.reset_index(level=None, drop=False, inplace=False, col_level=0, col_fill='')

level : Multi Index의 경우 제거할 인덱스의 레벨을 설정할수 있습니다. 기본적으로 모든 레벨입니다.
drop : 제거한 인덱스를 열에 추가할지 여부입니다. 기본값은 False로 제거된 인덱스는 열로 변환됩니다.
inplace : pandas 공통 인수로, 원본을 변경할지 여부 입니다.
col_level / col_fill : Multi Index의 경우 제거된 인덱스를 열에 추가할 때 레벨과 열의 이름을 설정할 수 있습니다.
col_level을 통해 레벨을 설정하고, col_fill을통해 해당 열의 이름을 정합니다.

❗ 멀티인덱스를 제거할 수 있음! pivot table에서 멀티인덱스 해체 가능
.
.
.
.

🤔 전처리 시 띄어쓰기 제거해야할 때는

replace( )

예)

df_target['시설명'] = df_target['시설명'].str.replace(" ", "")

문자열이라면 그냥 replace를 적용해도 되지만, Series인 경우에는 반드시 str을 붙여줘야 작동한다.

.
.
.

🤔 특정한 문자열이 포함되어있을 때는

contains( )

예)

df_target[df_target['시설명'].str.contains('휴관')

🤔 문자열을 나누고 싶을 때는

split( )

.
.
.
🤔 중복 값을 구할 때는

duplicated( ) : 중복 행 확인

  • 문법 : df.duplicated(subset=None, keep='first')
    subset : 특정 열만을 대상으로 할 수 있습니다. list의 사용도 가능합니다.
    keep : {first : 위부터 검사 / last : 아래부터 검사} 검사 순서를 정합니다. first일 경우 위부터 확인해서 중복행이 나오면 True를 반환하며, last일 경우 아래부터 확인합니다

  • 행의 모든 요소가 동일한 행이 존재할 경우에 True 반환

예)

duplicates = df.duplicated(subset='col_', keep=False)

🤔 중복 값을 삭제하고 싶을 때는

drop_duplicates( )

  • 문법 : DataFrame.drop_duplicates(subset=None, keep='first', inplace=False, ignore_index=False)

subset : 중복값을 검사할 열 입니다. 기본적으로 모든 열을 검사합니다.
keep : {first / last} 중복제거를 할 때 남길 행입니다. first면 첫값을 남기고 last면 마지막 값을 남깁니다.
inplace : 원본을 변경할지의 여부입니다.
ignore_index : 원래 index를 무시할지 여부입니다. True일 경우 0,1,2, ... , n으로 부여됩니다.

예)

duplicates = df.duplicated(subset='시설명_띄어쓰기_삭제', keep=False)

❗전처리에서 자주 내가 잊는 것들

  1. DataFrame의 열은 문자열이 아니라 시리즈(Series)! str 전환을 잊지말자
df['소재지도로명주소'].split(" ")[0]:

이 구문은 일반적인 문자열 메서드인 split을 사용하고 있습니다. 그러나 DataFrame의 열은 문자열이 아니라 시리즈(Series)이기 때문에, 문자열 메서드를 직접 사용할 수 없습니다.
따라서 이 구문은 AttributeError를 발생시킬 것입니다.


df['소재지도로명주소'].str.split(" ")[0]:

이 구문은 판다스(Pandas)의 문자열 메서드 중 하나인 str을 사용한 후 split 메서드를 적용하고 있습니다. str 메서드를 사용하면 시리즈 내의 각 문자열에 대해 문자열 메서드를 적용할 수 있습니다.
이 구문은 각 행의 '소재지도로명주소' 열 값을 먼저 공백을 기준으로 나눈 후에 그 결과 중 첫 번째 값을 선택합니다. 이 때 [0]은 리스트에서 첫 번째 원소를 선택하는 인덱싱을 나타냅니다.
profile
데이터로 경로를 탐색합니다.

0개의 댓글