10) Missing Data
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# |
댓글남기기