python

[python] dataframe replace / rename / value_counts / unique / nunique

독립성이 강한 ISFP 2023. 3. 25. 14:43
728x90
반응형

머신러닝 전처리 하면서 매번 사용하는 함수들을 정리해 보았다. 할 때마다 기억 안 나서 검색 검색 또 검색 맨날 검색 검색 해서^^ 일주일에 한 번은 꼭 사용하는 것 같은데 왜 기억을 못 하니...... 휴 절레절레

<목차>

1. replace : 문자열을 변경해 주는 함수
                    1.1 특정 피처에서 전체 값을 변경할 경우 
                    1.2 특정 피처에서 일부 값만 변경할 경우 
                    1.3 특정 피처가 아닌 전체 데이터셋에서 전체 값을 변경할 경우
2. rename : 피처명(칼럼명)을 변경해 주는 함수
3. value_counts : 고윳값과 고윳값의 개수를 출력해 주는 함수
4. unique : 고윳값의 종류를 출력해 주는 함수
5. nunique : 고윳값 종류의 수를 출력해 주는 함수


1. replace : 문자열을 변경해 주는 함수

- 전체 값을 변경할 경우 .replace(변경 전, 변경 후)

ex) A -> B 로 변경

 

- 일부 값만 변경할 경우 .str.replace(변경 전, 변경 후)

ex) ABCDE -> AABCDE 로 변경 (A를 AA로 변경하고 나머지 BCDE는 변경하지 않음)

df_last 데이터셋

위 그림은 df_last 데이터셋 입니다. 

규모구분 피처에 값들이 너무 번잡하여 필요없는 텍스트들을 제거해 주겠습니다. 제거한 후의 값들은 전용면적이라는 새로운 피처에 할당해 주겠습니다. 

 

1.1 특정 피처에서 전체을 변경할 경우 (ex) 전용면적 60㎡이하 -> 60㎡ 로 변경)

  • 데이터프레임['칼럼명'].replace("변경 전", "변경 후")
  • 데이터프레임['칼럼명'].replace({ "변경 전" : "변경 후", "변경 전" : "변경 후" })
# 한 개씩 변경할 경우
df_last["전용면적"] = df_last["규모구분"].replace("전용면적 60㎡이하","60㎡")
df_last["전용면적"] = df_last["전용면적"].replace("전용면적 60㎡초과 85㎡이하", "60㎡~85㎡")
df_last["전용면적"] = df_last["전용면적"].replace("전용면적 85㎡초과 102㎡이하", "85㎡~102㎡")
df_last["전용면적"] = df_last["전용면적"].replace("전용면적 102㎡초과", "102㎡~")
df_last
# 한꺼번에 변경할 경우
df_last["전용면적"] = df_last["규모구분"].replace({"전용면적 60㎡이하":"60㎡",
                                           "전용면적 60㎡초과 85㎡이하": "60㎡~85㎡",
                                           "전용면적 85㎡초과 102㎡이하": "85㎡~102㎡",
                                           "전용면적 102㎡초과": "102㎡~"})
df_last

1.2 특정 피처에서 일부 값만 변경할 경우 (ex) 전용면적 -> ""(빈칸)으로 변경 (전용면적 60㎡이하 -> 60㎡이하 로 변경))

  • 데이터프레임['칼럼명'].str.replace("변경 전", "변경 후")
df_last["전용면적"] = df_last["규모구분"].str.replace("전용면적", "")
df_last["전용면적"] = df_last["전용면적"].str.replace("초과", "~")
df_last["전용면적"] = df_last["전용면적"].str.replace("이하", "")
df_last["전용면적"] = df_last["전용면적"].str.replace(" ", "")
df_last

1.1, 1.2 방법 모두 결과는 아래와 같습니다.

1.3 특정 피처가 아닌 전체 데이터셋에서 전체 값을 변경할 경우

  • 데이터프레임.replace({ "변경 전" : "변경 후", "변경 전" : "변경 후" })
df_last = df_last.replace({'서울':'서어어어울','제주':'제에에에주'})
df_last


2. rename : 피처명(칼럼명)을 변경해 주는 함수

데이터프레임.rename(columns = {변경 전 칼럼명: 변경 후 칼럼명})

df_last.head()
df_last.columns

보다시피 df_last 데이터셋의 칼럼명은 "지역명", "규모구분"입니다. 

rename 함수를 이용해서 지역명은 "지역 이름"으로, 규모구분은 "규모"로 변경해 주겠습니다.

df_last = df_last.rename(columns = {'지역명' : '지역 이름','규모구분' : '규모'})

df_last.head()
df_last.columns

변경이 잘 되었네요!


3. value_counts : 고윳값과 고윳값의 개수를 출력해 주는 함수

  • 데이터셋['칼럼명'].value_counts()

지역명이라는 피처에 어떤 고윳값이 존재하는지와, 각각의 고윳값의 개수를 출력해 보겠습니다.

df_last['지역명'].value_counts()

고윳값은 서울, 강원, 경남 등등 다양한 지역명이 존재하네요. 또한 각각의 고윳값들은 모두 동일하게 255개의 고윳값을 가지고 있습니다.

 

4. unique : 고윳값의 종류를 출력해 주는 함수

  • 데이터셋['칼럼명'].unique()

지역명이라는 피처에 어떤 고윳값이 존재하는지 알 수 있는 함수입니다.

df_last['지역명'].unique()

> array(['서울', '인천', '경기', '부산', '대구', '광주', '대전', '울산', '세종', '강원', '충북', '충남', '전북', '전남', '경북', '경남', '제주'], dtype=object)

 

5. nunique : 고윳값 종류의 수를 출력해 주는 함수

  • 데이터셋['칼럼명'].nunique()

지역명이라는 피처에 고윳값의 종류가 몇 개 존재하는지를 알 수 있는 함수입니다.

df_last['지역명'].nunique()

> 17

 

지역명 피처의 고윳값 종류는 '서울', '인천', '경기', '부산', '대구', '광주', '대전', '울산', '세종', '강원', '충북', '충남', '전북', '전남', '경북', '경남', '제주' 이니깐 총 17개가 맞네요! 

728x90
반응형