데이터 타입 조정
https://raw.githubusercontent.com/blackdew/tensorflow1/master/csv/iris2.csv
- 변수(칼럼) 타입 확인: 데이터.dtypes
- 변수를 범주형으로 변경:
- 데이터['칼럼명'].astype('category')
- 변수를 수치형으로 변경:
- 데이터['칼럼명'].astype('int')
- 데이터['칼럼명'].astype('float')
- NA 값의 처리
- NA 갯수 체크: 데이터.isna().sum()
- NA 값 채우기: 데이터['칼럼명'].fillna(특정숫자)
일단 데이터를 한번 불러와보자
품종이 0으로 뜨는데
세가지 품종을 각각 0,1,2 의 데이터로 바꿔놓은 상태이다.
범주형 데이터임.
원핫 인코딩을 해줘보자.
원핫인코딩이 안되는 걸 볼 수 있음.
데이터를 읽어들일때 판다스는 데이터가 숫자로 되어있으면 숫자로 인식을 함.
그러니 우리가 직접 범주형 데이터로 바꾸어주어야 함.
그전에 아이리스의 데이터 타입을 확인해보자.
음 이렇군.
get_dummies 로 해서 원핫인코딩을 시켜주려고 할때에
그 칼럼들은 저 타입이 category이거나 object 일때에만 원핫인코딩을 함.
품종 타입을 범주형으로 바꾸어 주자
품종의 타입을 category로 바꾸어 준다음
이 바꿔준 아이리스 품종을 아이리스 품종에 넣어주었다.
다시 아이리스 타입을 출력해보면 '품종'이 category로 바뀌어 있는걸 볼 수 있다.
다시 원핫인코딩을 해주었더니 제대로 되었다.
이번엔 NA 값의 처리 이다.
일단 NA값을 체크해보자
칼럼별로 NA값을 체크해줄수있다.
꽃잎폭에 있다.
tail을 찍어보면 숫자가 아닌값 NaN 이 마지막열에 보인다.
이 데이터를 만드신 분이 일부러 비워뒀다고 함.
이 값은 읽어들일 수 없다.
그러니 숫자로 바꾸어 줘야 겠지
아니면 저 행을 지워주던지
직접 액셀 같은 걸로 데이터를 편집할 수도 있겠지만 여기서는 저 NaN에 꽃잎폭의 평균값을 넣어주고 싶다.
mean 에다가 평균값을 넣어주고 출력했더니
평균이 출력되었다.
저 갑값을 채워주면 되겠다.
fillna 는 NA를 채워라 라는 뜻
다시 tail을 출력해보면 잘 들어가 있는걸 볼 수 있다.
참고 : 봉수골 개발자 이선비 유튜브 채널