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
판다스에서 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 결과
'Python > Pandas Tutorial' 카테고리의 다른 글
[Python pandas] Fill time interval by group :: 비어있는 시간 채우고, group별 직전값으로 NA 채우기 (2) | 2021.07.29 |
---|---|
[Python Pandas] pandas table sorting by other table's column (0) | 2021.03.19 |
[Python] pandas tutorial :: drop duplicates in pandas (0) | 2020.10.12 |
[Python] Pandas Tutorial :: groupby transform (groupby 결과 컬럼에 추가하기) (0) | 2020.10.07 |
[Python] Pandas Tutorial :: groupby (0) | 2020.10.07 |