6 분 소요

10. 결측치

비어 있는 데이터

import pandas as pd
df = pd.read_excel('score.xlsx', index_col='지원번호')
df
이름 학교 국어 영어 수학 과학 사회 SW특기
지원번호
1번 채치수 북산고 197 90 85 100 95 85 Python
2번 정대만 북산고 184 40 35 50 55 25 Java
3번 송태섭 북산고 168 80 75 70 80 75 Javascript
4번 서태웅 북산고 187 40 60 70 75 80 NaN
5번 강백호 북산고 188 15 20 10 35 10 NaN
6번 변덕규 능남고 202 80 100 95 85 80 C
7번 황태산 능남고 188 55 65 45 40 35 PYTHON
8번 윤대협 능남고 190 100 85 90 95 95 C#

데이터 채우기 fillna

df.fillna('') # NaN 데이터를 빈칸으로 채움
이름 학교 국어 영어 수학 과학 사회 SW특기
지원번호
1번 채치수 북산고 197 90 85 100 95 85 Python
2번 정대만 북산고 184 40 35 50 55 25 Java
3번 송태섭 북산고 168 80 75 70 80 75 Javascript
4번 서태웅 북산고 187 40 60 70 75 80
5번 강백호 북산고 188 15 20 10 35 10
6번 변덕규 능남고 202 80 100 95 85 80 C
7번 황태산 능남고 188 55 65 45 40 35 PYTHON
8번 윤대협 능남고 190 100 85 90 95 95 C#
df.fillna('없음')
이름 학교 국어 영어 수학 과학 사회 SW특기
지원번호
1번 채치수 북산고 197 90 85 100 95 85 Python
2번 정대만 북산고 184 40 35 50 55 25 Java
3번 송태섭 북산고 168 80 75 70 80 75 Javascript
4번 서태웅 북산고 187 40 60 70 75 80 없음
5번 강백호 북산고 188 15 20 10 35 10 없음
6번 변덕규 능남고 202 80 100 95 85 80 C
7번 황태산 능남고 188 55 65 45 40 35 PYTHON
8번 윤대협 능남고 190 100 85 90 95 95 C#
import numpy as np
df['학교'] = np.nan # 학교 데이터 전체를 NaN 으로 채움
df
이름 학교 국어 영어 수학 과학 사회 SW특기
지원번호
1번 채치수 NaN 197 90 85 100 95 85 Python
2번 정대만 NaN 184 40 35 50 55 25 Java
3번 송태섭 NaN 168 80 75 70 80 75 Javascript
4번 서태웅 NaN 187 40 60 70 75 80 NaN
5번 강백호 NaN 188 15 20 10 35 10 NaN
6번 변덕규 NaN 202 80 100 95 85 80 C
7번 황태산 NaN 188 55 65 45 40 35 PYTHON
8번 윤대협 NaN 190 100 85 90 95 95 C#
df.fillna('모름', inplace = True)
df
이름 학교 국어 영어 수학 과학 사회 SW특기
지원번호
1번 채치수 모름 197 90 85 100 95 85 Python
2번 정대만 모름 184 40 35 50 55 25 Java
3번 송태섭 모름 168 80 75 70 80 75 Javascript
4번 서태웅 모름 187 40 60 70 75 80 모름
5번 강백호 모름 188 15 20 10 35 10 모름
6번 변덕규 모름 202 80 100 95 85 80 C
7번 황태산 모름 188 55 65 45 40 35 PYTHON
8번 윤대협 모름 190 100 85 90 95 95 C#
df = pd.read_excel('score.xlsx', index_col='지원번호')
df
이름 학교 국어 영어 수학 과학 사회 SW특기
지원번호
1번 채치수 북산고 197 90 85 100 95 85 Python
2번 정대만 북산고 184 40 35 50 55 25 Java
3번 송태섭 북산고 168 80 75 70 80 75 Javascript
4번 서태웅 북산고 187 40 60 70 75 80 NaN
5번 강백호 북산고 188 15 20 10 35 10 NaN
6번 변덕규 능남고 202 80 100 95 85 80 C
7번 황태산 능남고 188 55 65 45 40 35 PYTHON
8번 윤대협 능남고 190 100 85 90 95 95 C#
df['SW특기'].fillna('확인 중',inplace=True) # SW특기 데이터 중에서 NaN에 대해서 채움
df
이름 학교 국어 영어 수학 과학 사회 SW특기
지원번호
1번 채치수 북산고 197 90 85 100 95 85 Python
2번 정대만 북산고 184 40 35 50 55 25 Java
3번 송태섭 북산고 168 80 75 70 80 75 Javascript
4번 서태웅 북산고 187 40 60 70 75 80 확인 중
5번 강백호 북산고 188 15 20 10 35 10 확인 중
6번 변덕규 능남고 202 80 100 95 85 80 C
7번 황태산 능남고 188 55 65 45 40 35 PYTHON
8번 윤대협 능남고 190 100 85 90 95 95 C#

데이터 제외하기 dropna

df = pd.read_excel('score.xlsx', index_col='지원번호')
df
이름 학교 국어 영어 수학 과학 사회 SW특기
지원번호
1번 채치수 북산고 197 90 85 100 95 85 Python
2번 정대만 북산고 184 40 35 50 55 25 Java
3번 송태섭 북산고 168 80 75 70 80 75 Javascript
4번 서태웅 북산고 187 40 60 70 75 80 NaN
5번 강백호 북산고 188 15 20 10 35 10 NaN
6번 변덕규 능남고 202 80 100 95 85 80 C
7번 황태산 능남고 188 55 65 45 40 35 PYTHON
8번 윤대협 능남고 190 100 85 90 95 95 C#
df.dropna(inplace = True) # NaN을 포함하는 데이터 삭제
df
이름 학교 국어 영어 수학 과학 사회 SW특기
지원번호
1번 채치수 북산고 197 90 85 100 95 85 Python
2번 정대만 북산고 184 40 35 50 55 25 Java
3번 송태섭 북산고 168 80 75 70 80 75 Javascript
6번 변덕규 능남고 202 80 100 95 85 80 C
7번 황태산 능남고 188 55 65 45 40 35 PYTHON
8번 윤대협 능남고 190 100 85 90 95 95 C#
df = pd.read_excel('score.xlsx', index_col='지원번호')
df
이름 학교 국어 영어 수학 과학 사회 SW특기
지원번호
1번 채치수 북산고 197 90 85 100 95 85 Python
2번 정대만 북산고 184 40 35 50 55 25 Java
3번 송태섭 북산고 168 80 75 70 80 75 Javascript
4번 서태웅 북산고 187 40 60 70 75 80 NaN
5번 강백호 북산고 188 15 20 10 35 10 NaN
6번 변덕규 능남고 202 80 100 95 85 80 C
7번 황태산 능남고 188 55 65 45 40 35 PYTHON
8번 윤대협 능남고 190 100 85 90 95 95 C#
  • axis : index or columns

  • how : any or all

df.dropna(axis='index', how='any') # NaN 가 하나라도 있는 row 삭제
이름 학교 국어 영어 수학 과학 사회 SW특기
지원번호
1번 채치수 북산고 197 90 85 100 95 85 Python
2번 정대만 북산고 184 40 35 50 55 25 Java
3번 송태섭 북산고 168 80 75 70 80 75 Javascript
6번 변덕규 능남고 202 80 100 95 85 80 C
7번 황태산 능남고 188 55 65 45 40 35 PYTHON
8번 윤대협 능남고 190 100 85 90 95 95 C#
df.dropna(axis='columns') # NaN이 하나라도 있는 columns 삭제 (how의 default 값: any)
이름 학교 국어 영어 수학 과학 사회
지원번호
1번 채치수 북산고 197 90 85 100 95 85
2번 정대만 북산고 184 40 35 50 55 25
3번 송태섭 북산고 168 80 75 70 80 75
4번 서태웅 북산고 187 40 60 70 75 80
5번 강백호 북산고 188 15 20 10 35 10
6번 변덕규 능남고 202 80 100 95 85 80
7번 황태산 능남고 188 55 65 45 40 35
8번 윤대협 능남고 190 100 85 90 95 95
df['학교'] = np.nan
df
이름 학교 국어 영어 수학 과학 사회 SW특기
지원번호
1번 채치수 NaN 197 90 85 100 95 85 Python
2번 정대만 NaN 184 40 35 50 55 25 Java
3번 송태섭 NaN 168 80 75 70 80 75 Javascript
4번 서태웅 NaN 187 40 60 70 75 80 NaN
5번 강백호 NaN 188 15 20 10 35 10 NaN
6번 변덕규 NaN 202 80 100 95 85 80 C
7번 황태산 NaN 188 55 65 45 40 35 PYTHON
8번 윤대협 NaN 190 100 85 90 95 95 C#
df.dropna(axis='columns', how='all') # 데이터 전체가 NaN인 경우에만 columns 삭제
이름 국어 영어 수학 과학 사회 SW특기
지원번호
1번 채치수 197 90 85 100 95 85 Python
2번 정대만 184 40 35 50 55 25 Java
3번 송태섭 168 80 75 70 80 75 Javascript
4번 서태웅 187 40 60 70 75 80 NaN
5번 강백호 188 15 20 10 35 10 NaN
6번 변덕규 202 80 100 95 85 80 C
7번 황태산 188 55 65 45 40 35 PYTHON
8번 윤대협 190 100 85 90 95 95 C#

댓글남기기