pandas Dataframe 에서 문자열 칼럼을 숫자형으로 바꿔야할 때가 종종 있습니다.
그 때 쓰는 메서드는 보통
pd.to_numeric()
dataframe.astype()
이렇게 2가지가 있습니다.
하나하나 살펴보겠습니다.
1) to_numeric()
시리즈 데이터를 하나 만들었습니다. 여기에 pd.to_numeric( ) 을 하겠습니다.
시리즈 데이터로 넣었더니, 타입이 int 로 만들어진 것을 확인할 수 있습니다.
근데, 만약에 dataframe으 모든 칼럼을 숫자형으로 바꾸고 싶다면 어떨까요?
이 때는 apply 라는 메서드를 통해서 사용합니다.
apply 메서드에 대해 잠깐 살펴보겠습니다.
apply 메서드 안에는 커스텀함수나 기존의 메서드들을 인자로 넣어주시면 됩니다.
한 칼럼의 최대값과 최소값의 차이를 리턴해주는 커스텀 함수 f 를 만들었구요.
데이터프레임에 apply 를 썼더니 모든 칼럼에 f 함수가 적용된 것을 볼 수 있습니다.
기본적으로 apply 는 칼럼을 중심으로 함수가 적용되는데 만약 인덱스별로 (가로로) 함수가 적용되게 하고 싶다면
axis='columns' 라는 인자를 넘기면 각 로우에 대해 한 번씩 함수를 수행합니다.
자, 다시 to_numeric 으로 넘어오겠습니다.
dataframe통째로 apply를 적용할 수 있지만, 위에서 보는 것처럼 특정 칼럼만 지정해서 to_numeric을 쓸 수도 있습니다.
통째로 적용하고 싶다면 데이터프레임의 변수명을 그대로 apply 앞에 적어주시고 메서드를 실행시켜주면 됩니다.
참고로, apply 메서드 안에는 커스텀 함수가 아닌 pandas 에 있는 to_numeric 을 적어주었습니다.
커스텀 함수는 기존 만들어진 함수든 같은 '함수'라는 사실임을 헷갈리지 마시길!
2) astype()
개인적으로 astype을 좀 더 선호하는데 뭔가 명시적으로 타입을 지정해주는 게 더 낫다고 생각하기 때문입니다.
사용법은 앞에서 to_numeric 쓰는 법과 비슷합니다.
astype은 그냥 단독으로 쓰고 타입만 인자로 전달해주면 되서 좀 덜 헷갈리는 느낌입니다. (제 기준입니다)
또한, 각 칼럼별 타입을 위와 같이 딕셔너리형태로 지정해줄 수도 있습니다.
이상 포스팅을 마치겠습니다 :)
위 실습 파일은 아래 깃허브에 올려놓았습니다.
----------------참고 출처----------------
https://rfriend.tistory.com/470
https://data-make.tistory.com/123
'데이터분석 > pandas' 카테고리의 다른 글
공공데이터 '아파트 분양가격' 동향 파악하기 - final (0) | 2020.03.09 |
---|---|
pandas series dataframe (0) | 2020.03.01 |
공공데이터 '아파트 분양가격' 동향 파악하기 - 1단계 (0) | 2020.02.29 |
pandas 개념2 불린 추출과 중복값 처리(drop_duplicated) (0) | 2019.12.26 |
pandas 개념1 기본(head,tail,sample,shape,info) + loc, iloc, 행번호, 인덱스 이해하기 (0) | 2019.12.24 |