[Python] pandas tutorial :: replace nan/na/null
2020/09/18 - [Python/Pandas Tutorial] - [Python] Pandas Tutorial :: pandas란? 데이터프레임이란? 시리즈란?
2020/09/19 - [Python/Pandas Tutorial] - [Python] Pandas Tutorial :: read csv, txt file with pandas
2020/09/22 - [Python/Pandas Tutorial] - [Python] Pandas Tutorial :: add row, column
2020/10/07 - [Python/Pandas Tutorial] - [Python] Pandas Tutorial :: groupby
2020/10/12 - [Python/Pandas Tutorial] - [Python] pandas tutorial :: drop duplicates in pandas
[Python] pandas tutorial :: drop duplicates in pandas
2020/09/18 - [Python/Pandas Tutorial] - [Python] Pandas Tutorial :: pandas란? 데이터프레임이란? 시리즈란? 2020/09/19 - [Python/Pandas Tutorial] - [Python] Pandas Tutorial :: read csv, txt file with..
leedakyeong.tistory.com
판다스에서 Null 값 대체하기
1. Import padas
import pandas as pd
2. Create Table
실습에 사용한 pandas 예제 table을 만든다.
school_id_list = [{'name':'John', 'job':"teacher", 'age':40},
{'name':'Nate', 'job':"teacher", 'age':35},
{'name':'Yuna', 'job':"teacher", 'age':37},
{'name':'Abraham', 'job':"student", 'age':10},
{'name':'Brian', 'job':"student", 'age':12},
{'name':'Janny', 'job':"student", 'age':11},
{'name':'Nate', 'job':"teacher", 'age':None},
{'name':'John', 'job':"student", 'age':None}]
df = pd.DataFrame(school_id_list, columns = ['name','job','age'])
선생님 한 명과 학생 한 명에 None을 포함한 테이블을 만들었다.
3. Table 정보 확인
df.shape으로 8개의 행, 3개의 열로 이루어진 테이블이라는 것을 확인했다.
이후 df.info()로 테이블의 정보를 확인할 수 있는데, age 컬럼은 총 8개의 행 중 6개만 non-null임을 알 수 있다.
df.isna()나 df.isnull()로 정확히 어떤 위치에 na/null이 있는지 볼 수 있다.
df.isna().sum() 으로 각 컬럼별 na 개수도 확인할 수 있다.
4. NA 다른 값으로 채우기
age 컬럼에 na 가 존재한다. 여기를 특정 값으로 채울 때 .fillna(VALUE) 함수를 사용하면 된다.
예) 0으로 채우기
df.age = df.age.fillna(0)
예) 100으로 채우기
df.age = df.age.fillna(100)
이번에는 선생님인 Nate 는 다른 선생님들 나이의 중앙값, 학생인 John은 다른 학생들 나이의 중앙값으로 채워보겠다.
df['age'].fillna(df.groupby('job')['age'].transform('median'), inplace = True)
groupby 를 활용하여 직업별 나이를 계산하고 na 부분을 채워준다.
결과는 다음과 같다.
참고 :: groupby 결과
