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

2023. 3. 25. 14:43·python
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
반응형
저작자표시 (새창열림)

'python' 카테고리의 다른 글

[python] pandas stack / unstack  (0) 2023.03.27
[python] dataframe groupby / pivot tabel  (1) 2023.03.27
[python] matplotlib - plt.bar (xlabel / ylabel / xticks / yticks / legend)  (0) 2023.03.24
[python] 결측값(null/nan) 개수/ 존재 구하는 방법  (0) 2023.03.18
[python] Class, __init__, 상속  (0) 2023.02.15
'python' 카테고리의 다른 글
  • [python] pandas stack / unstack
  • [python] dataframe groupby / pivot tabel
  • [python] matplotlib - plt.bar (xlabel / ylabel / xticks / yticks / legend)
  • [python] 결측값(null/nan) 개수/ 존재 구하는 방법
ISFP의 블로그
ISFP의 블로그
이건 첫 번째 레슨, 업무에서 마주친 문제 해결 경험 공유하기 이건 두 번째 레슨, 개인적으로 공부한 데이터/AI 지식을 기록하기 이건 세 번째 레슨, 다른 사람과 비교하지 말고 오직 어제의 나와 비교하기
  • ISFP의 블로그
    resultofeffort
    ISFP의 블로그
  • 전체
    오늘
    어제
    • 분류 전체보기 (117)
      • python (25)
      • pythonML (27)
      • Linux (0)
      • 오류Error (8)
      • information (7)
      • Deep learning (5)
      • pytorch (29)
      • 코딩테스트 (4)
      • 밑바닥 DL (4)
      • 논문 리뷰 (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    cnn
    pytorch
    데이터분석
    오블완
    딥러닝
    konlpy
    인공지능
    자연어처리
    deeplearning
    분류
    Python
    Pandas
    Deep Learning
    Ai
    토큰화
    머신러닝
    machinelearning
    티스토리챌린지
    텍스트전처리
    nlp
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
ISFP의 블로그
[python] dataframe replace / rename / value_counts / unique / nunique
상단으로

티스토리툴바