본문 바로가기
데이터분석/Pandas&Numpy

pandas 잘못 입력한 데이터 처리하기

by ADELA_J 2023. 7. 3.

<잘못 입력한 데이터 처리하기>

이 데이터로 실습해보기

데이터에서 1,3,5,7 행의 total_bill 열의 데이터를 missing으로 바꿔서 새로 저장해줌

그리고 나서 보면 missing(얘가 문자열)으로 인해 total_bill이 object 문자열로 바뀌었다는걸 알 수 있음.

▶ 그래서 astype(float)로 바꿔주고 싶어도 문자열을 실수로 변환할 수 있는 방법은 얘가 할 수 없음.

그래서 to_numerice 메서드를 사용할 수 있음. (사실 얘도 변환할수는 없지만 어느정도 제어는 ㄱㄴㄱㄴ)

errors인자에 설정할 수 있는 값:

- raise : 숫자로 변환할 수 없는 값이 있으면 오류 발생 (기본설정은 이거)

- coerce : 숫자로 변환할 수 없는 값을 누락값으로 지정

- ignore : 아무 작업도 하지 않음. (오류는 발생하지만 자료형도 변하지않지)

https://pandas.pydata.org/docs/reference/api/pandas.to_numeric.html?highlight=to_numeric 

 

pandas.to_numeric — pandas 2.0.3 documentation

Can be ‘integer’, ‘signed’, ‘unsigned’, or ‘float’. If not None, and if the data has been successfully cast to a numerical dtype (or if the data was numeric to begin with), downcast that resulting data to the smallest numerical dtype possib

pandas.pydata.org

 

--> errors 인자값에 ignore를 줬을 때 (결국 안바뀌었댜 ☆)

--> errors 인자값에 coerce 을 줬을때 강제로 float를 유지하긴함. 그러니 NaN으로 나옴

 

- 그리고 downcast라는 인자도 있지. 정수와 실수과 같은 자료형을 더 작은 형태로 만들 때 사용

  --> 인자에는 integer, signed, unsigned, float 등의 값을 사용가능함.

그래서 float 64에서 32로 내렸음.

>>float64는 32보다 더 많은 범위의 실수를 표현할 수 있지만 메모리 공간을 2배나 차지

 ---> 만약 저장하는 실수의 범위가 크지 않다면 다운 캐스트 하는 것을 추천.