1. 결측치(Null)
데이터 중에 비어 있는 값.
수집 과정에서 오류로 발생한다.
2. DataFrame Source
grade_dic = {
'국어': [98, 88, 92, 63, None],
'영어': [None, 90, 70, 60, 50],
'수학': [88, 62, None, 31, None],
'과학': [64, 72, None, 70, 88]
}
import pandas
from pandas import DataFrame
from prettytable import PrettyTable
df = DataFrame(grade_dic, index=['코난', '뭉치', '아름', '세모', '장미'])
if isinstance(df, pandas.core.frame.DataFrame):
table = PrettyTable([''] + list(df.columns))
for row in df.itertuples():
table.add_row(row)
print(str(table))
else:
print(df)
+------+------+------+------+------+
| | 국어 | 영어 | 수학 | 과학 |
+------+------+------+------+------+
| 코난 | 98.0 | nan | 88.0 | 64.0 |
| 뭉치 | 88.0 | 90.0 | 62.0 | 72.0 |
| 아름 | 92.0 | 70.0 | nan | nan |
| 세모 | 63.0 | 60.0 | 31.0 | 70.0 |
| 장미 | nan | 50.0 | nan | 88.0 |
+------+------+------+------+------+
Process finished with exit code 0
miss_data = df.isnull()
miss_data = df.isna()
+------+-------+-------+-------+-------+
| | 국어 | 영어 | 수학 | 과학 |
+------+-------+-------+-------+-------+
| 코난 | False | True | False | False |
| 뭉치 | False | False | False | False |
| 아름 | False | False | True | True |
| 세모 | False | False | False | False |
| 장미 | True | False | True | False |
+------+-------+-------+-------+-------+
4. 결측치 카운팅
miss_data_sum = miss_data.sum()
국어 1
영어 1
수학 2
과학 1
dtype: int64
Process finished with exit code 0
5. 결측치 포함 행 삭제(inplace = True : 삭제 결과가 리턴 되지 않고 원본 적용)
na_del = df.dropna()
+------+------+------+------+------+
| | 국어 | 영어 | 수학 | 과학 |
+------+------+------+------+------+
| 뭉치 | 88.0 | 90.0 | 62.0 | 72.0 |
| 세모 | 63.0 | 60.0 | 31.0 | 70.0 |
+------+------+------+------+------+
Process finished with exit code 0
6. 결측치 포함 열 삭제(inplace = True : 삭제 결과가 리턴 되지 않고 원본 적용)
na_del = df.dropna(axis=1)
+------+
| |
+------+
| 코난 |
| 뭉치 |
| 아름 |
| 세모 |
| 장미 |
+------+
Process finished with exit code 0
na_del = df.dropna(how='all')
+------+------+------+------+------+
| | 국어 | 영어 | 수학 | 과학 |
+------+------+------+------+------+
| 코난 | 98.0 | nan | 88.0 | 64.0 |
| 뭉치 | 88.0 | 90.0 | 62.0 | 72.0 |
| 아름 | 92.0 | 70.0 | nan | nan |
| 세모 | 63.0 | 60.0 | 31.0 | 70.0 |
| 장미 | nan | 50.0 | nan | 88.0 |
+------+------+------+------+------+
Process finished with exit code 0
8. 열의 모든 값이 결측치면 열 삭제
na_del = df.dropna(how='all', axis=1)
+------+------+------+------+------+
| | 국어 | 영어 | 수학 | 과학 |
+------+------+------+------+------+
| 코난 | 98.0 | nan | 88.0 | 64.0 |
| 뭉치 | 88.0 | 90.0 | 62.0 | 72.0 |
| 아름 | 92.0 | 70.0 | nan | nan |
| 세모 | 63.0 | 60.0 | 31.0 | 70.0 |
| 장미 | nan | 50.0 | nan | 88.0 |
+------+------+------+------+------+
Process finished with exit code 0
'Python_Intermediate > Pandas' 카테고리의 다른 글
Pandas - 서울시 자치구 년도별 CCTV 설치 현황 (0) | 2019.05.14 |
---|---|
Python Pandas 박스오피스 180507 순위 분석 (0) | 2019.05.08 |
190507 14:22> Naver 실시간 검색어 20위 (0) | 2019.05.07 |
Python Pandas 박스오피스 180506 순위 분석 (0) | 2019.05.07 |
190506 11:25> Naver 실시간 검색어 20위 (0) | 2019.05.06 |