본문 바로가기

나 취준생/파이썬

Pandas 데이터 유형 변환(Apply), 결측치 확인(Isnull)

320x100

# 데이터 유형 변환



예제 : emp3.csv 파일을 읽고, 이름과 월급을 출력하는데 이 때 월급을 실수로 출력되게 하기


1
2
3
import pandas as pd
emp = pd.read_csv("c:\\data\\emp3.csv")
print( emp[['ename','sal']])




먼저 기존의 emp 데이터 프레임의 이름과 월급을 확인해보면, 다음과 같이 정수형인 것을 볼 수 있다.

이것을 이제 실수형으로 바꿔보자.




1
2
3
4
import pandas as pd
emp = pd.read_csv("c:\\data\\emp3.csv")
emp['sal']=emp['sal'].apply(float)
print( emp[['ename','sal']])




.apply()로 emp 데이터 프레임에 'sal' 시리즈에 적용해서 이렇게 데이터 유형을 변경할 수 있다.

즉 emp['sal].apply(float)으로 데이터 유형을 실수로 바꾼 뒤, emp['sal']에 다시 할당한 것




# 결측치 확인하기


결측치(NaN)를 처리하는 판다스 함수


예제 : 이름과 커미션을 출력하기


1
2
3
import pandas as pd
emp=pd.read_csv("c:\\data\\emp3.csv")
print(emp[['ename','comm']])




일단 보기와 같이 커미션은 결측치가 많이 존재하고 있다.


예제 : 커미션이 결측치인 사원들의 이름과 커미션을 출력하기


1
2
3
import pandas as pd
emp=pd.read_csv("c:\\data\\emp3.csv")
print(emp[['ename','comm']][emp['comm'].isnull()])




조건절에서 isnull() 함수를 사용하면 된다.


예제 : 커미션이 결측치가 아닌 사원들의 이름과 커미션을 출력하기


1
2
3
import pandas as pd
emp=pd.read_csv("c:\\data\\emp3.csv")
print(emp[['ename','comm']][~emp['comm'].isnull()])




간단하게 조건절 앞에 '~' 물결 표시만 붙여주면 된다.


오라클에서 not between, not null, not like 처럼 NOT을 붙이는 상황에

판다스에서는 NOT 대신 '~' 해주면 해결 되는 것 같다.


예제 : CSV 파일에 결측치가 있는지 확인하는 방법


emp를 구체화하지 않고, 그대로 isnull()을 돌려버리면 데이터 값마다

결측치가 아니라면 FALSE 결측치라면 TRUE가 한번에  반환된다.


1
2
3
import pandas as pd
emp=pd.read_csv("c:\\data\\emp3.csv")
print(emp.isnull())





그런데, 지금은 CSV파일이 아주 작지만 데이터가 만약 크다면 이렇게 일일이 TRUE를 찾기 힘들다.


예제 : 컬럼별로 결측치 확인하기


1
2
3
import pandas as pd
emp=pd.read_csv("c:\\data\\emp3.csv")
print(emp.isnull().sum())




isnull() 해준 뒤 .sum()만 붙여주면

True는 1이기 때문에 결측치 수만큼 숫자가 늘어난다.

그래서 이렇게 한 눈에 결측치가 얼마나 있는지 편리하게 확인할 수 있다.


예제 : (내게는 대용량인) 타이타닉 데이터의 결측치 확인


1
2
3
import pandas as pd
tat=pd.read_csv("c:\\data\\train.csv")
print(tat.isnull().sum())




반응형