학습 목표
- 결측치를 처리하는 방법을 익힌다.
강의 자료
핵심 키워드
- isnull() : 데이터프레임에 결측값이 있는지 여부를 확인. True = 결측값/ False = 결측값 없음.
- sum() : 각 열에 있는 결측값의 총합 계산
- plot
1.plot() : 기본적인 선 그래프
2.plot.bar() : 수직 막대 그래프
3.plot.barh() : 수평 막대 그래프 - reset_index : 데이터프레임의 인덱스를 리셋하여 새로운 정수형 인덱스를 부여
- sort_values() : 데이터프레임을 특정(여러) 열을 기준으로 정렬하는 함수
- NaN : not a number - 결측값을 나타내는 표준
- drop() : 데이터프레임에서 특정 행(axis=0)/열(axis=1)을 제거하는데 사용
학습내용
결측치 확인하기
null_count = df.isnull().sum()
null_count
- null_count 라는 변수에 isnull().sum()을 해서 각 column 별 결측치의 개수를 확인합니다.
결과 :
- 여기서 boolean indexing을 사용하는데요, True는 1이니 isnull()을 하여 해당 데이터가 결측치라면 True를 출력하고, sum()은 True의 개수를 세줍니다.
결측치 시각화하기
1) 기본 그래프
null_count.plot()
- 결측치의 갯수를 시각화합니다. 기본값으로 line 그래프를 그려줍니다.
- 결과 :
plot.에서 tab 키를 누르면 그릴 수 있는 다른 그래프들을 보여줍니다.
2) bar 그래프
null_count.plot.bar()
- bar 그래프를 그리면 아래와 같은 그래프를 보실 수 있습니다. 그런데 글자들이 겹쳐서 잘 안 보이니 글자들을 기울여보겠습니다.
- 결과 :
null_count.plot.bar(rot=60)
- rot를 옵션으로 지정해주면 글자들이 회전하여 표시됩니다.
- 결과 :
3) barh 그래프
null_count.plot.barh(figsize=(5,7))
- barh()로 세로 막대형 그래프를 그리면 글씨를 보기에 더욱 좋습니다. figsize(5,7)로 사이즈도 지정해줍니다.
- 결과 :
데이터 프레임 형태로 변형하기
1) 인덱스 초기화하기
df_null_count = null_count.reset_index
df_null_count.head()
- reset_index를 활용하면 데이터 프레임 형태로 변환이 됩니다.
- 결과 :
2) 새로운 칼럼명 지정하기
df_null_count.columns = ["컬럼명", "결측치수"]
df.null_count.head()
- 새로운 칼럼명을 지정할 수 있습니다.
- 결과 :
- 결측치만 보기
- sort_values()의 옵션에서 by로 기준 column를 설정하고, ascending으로 오름차순, 내림차순 정렬을 지정합니다.
df.null_count.sort_values(by="결측치수", ascending=False)
- 결측치수를 기준으로 내림차순 정렬을 합니다.
- 결과 :
df_null_count_top = df.null_count.sort_values(by="결측치수", ascending=False).head(10)
- 상위 10개만 뽑기 위해 head(10)을 지정하고, 이 DataFrame을 df_null_count_top이라는 변수에 넣습니다.
결과 :

특정 컬럼만 불러오기
- NaN : Not a Number의 약자로 결측치로 보면 됩니다.
df["지점명"].head()
- 결측치의 상황을 확인합니다.
- 결과 :
1) column명 리스트화하기
drop_columns = df_null_count_top["컬럼명"].tolist()
- 삭제할 column의 이름을 리스트 형태로 만듭니다.
- 결과 :
2) 삭제할 column 확인하기
df[drop_columns].head()
- 삭제할 column을 조회합니다.
- 결과 :
3) 삭제하기

- drop에도 다양한 옵션이 있음을 확인할 수 있습니다.
print(df)
df = df.drop(drop_columns, axis=1)
print(df)
- 열을 기준으로 삭제해야 하기 때문에 axis = 1을 지정합니다. 행을 삭제하려면 0을 넣어야 합니다.
- 결과 :
- drop을 한 후, 39개였던 열이 29개가 되었고, 메모리도 20MB로 줄어들었습니다.
'[STUDY] > [NAVER_boostcourse]' 카테고리의 다른 글
온라인 판매 분석 퀴즈 (0) | 2024.08.25 |
---|---|
수치 데이터 요약하기 - 기술통계 값 보기 (0) | 2024.08.10 |
데이터 분포 확인 퀴즈 (0) | 2024.08.10 |
공공데이터 사용 (0) | 2024.08.03 |
아나콘다 파일 경로 설정 (0) | 2024.08.02 |