본문 바로가기
수업(국비지원)/Python

[Python] 범주형 데이터1

by byeolsub 2023. 4. 25.
'''
2022-12-08 복습
  데이터 전처리 : 원본데이터를 원하는 형태로 변경 과정. 
    1. 결측값 처리 : 값이 없는 경우.
        - isnull() : 결측값인 경우 True, 일반값인 경우 False
        - notnull() : 결측값인 경우 False, 일반값인 경우 True
        - dropna() : 결측값 제거 함수
              dropna(axis=1,thresh=500) : 결측값이 500개 이상인 컬럼 제거
              dropna(subser=[컬럼명],how=any/all, axis=0) :결측값을 가지고 있는 행 제거
        - fillna :결측값 치환
           fillna(치환값,inplace=True)
           fillna(방법,inplace=True) : method="ffill"/"bfill"
    2. 중복데이터 처리 
       - duplicated() : 중복데이터 찾기. 첫번째 데이터는 False, 같은 데이터인 경우 두번째 True       
       - drop_duplicates() : 중복데이터를 제거. 중복된 데이터 중 한개는 남김.
    3. 새로운 컬럼 생성
       - df[컬럼명] : 컬럼명이 없는 경우 생성, 있으면 수정.
       - round(자리수) : 반올림.    
    4. 오류데이터 존재.
       - 결측값 치환 : 결측값(np.nan) 
                 replace(오류문자열, np.nan, inplace=True)
'''

📌

### 범주형 데이터 :
# origin 컬럼 : 1:USA, 2:EU, 3:JAPAN
df["origin"].unique()
df["origin"].describe()

# 정수형 컬럼을 문자열 범주형 데이터로 변환
# 범주형 : category형

#1. 정수형 데이터를 문자열형으로 변환
df["origin"].replace({1:"USA",2:"EU",3:"JAPEN"},inplace=True)
df["origin"].unique()
df.info()

#2. 문자열형을 범주형으로 변환
df["origin"] = df["origin"].astype("category")
df.info()

# 3. 범주형을 문자열형으로 변환
df["origin"] = df["origin"].astype("str")
df.info()

 


 📌

# 범주형 : 값의 범위 가지고 있는 자료형.
#          값의 크기와 상관없이 단순한 범위를 의미. 통계데이터가 필요없다.

import pandas as pd
age = pd.Series([26,42,27,25,20,20,21,22,23,25]) 
stu_class = pd.Categorical([1,1,2,2,2,3,3,4,4,4])
gender = pd.Categorical(['F','M','M','M','M','F','F','F','M','M'])
c_df = pd.DataFrame({'age':age,'class':stu_class,'gender':gender})
c_df.info()
c_df.describe()

# class 컬럼을 범주형 => 정수형
c_df["class"] = c_df["class"].astype("int") 
c_df.info()
c_df.describe()

#날짜 데이터
#20220101부터 이후 6까지의 날짜를 데이터
#date_range : 날짜의 범위를 지정

# 단위 설정
# freq="D" : 일자기준. 기본값
# freq="M" : 월의 종료일 기준
# freq="MS" : 월의 시작일 기준
# freq="3M" : 3개월의 종료일 기준
# freq="6M" : 6개월의 종료일 기준

dates = pd.date_range('20220101',periods=6,freq="D") # 일
dates

dates = pd.date_range('20220101',periods=6,freq="M") # 말일
dates

dates = pd.date_range('20220101',periods=6,freq="MS") # 매월 1일
dates

dates = pd.date_range('20220101',periods=6,freq="3M") # 3개월 단위의 말일
dates

dates = pd.date_range('20220101',periods=6,freq="6M") # 6개월 단위의 말일
dates