[데이터 전처리] 시각화 - 박스 플롯

Bpius·2023년 10월 3일
0

데이터 EDA & 전처리

목록 보기
9/46
post-thumbnail

데이터를 시각화하기 위한 모듈로 matplotlib를 사용하여 다양한 그래프를 나타낼 수 있다.
대표적으로 라인, 산점도, 막대, 히스토그램, 박스 그래프 등이 있다.

jupyter notebook에서 %matplotlib inline을 설정하여 셀에 그래프를 바로 출력하여 확인할 수 있다.
아래와 같이 모듈을 불러와 셀에 직접 그릴 수 있도록 설정하고 plt란 키워드로 모듈을 사용하도록 한다.

import matplotlib.pyplot as plt
%matplotlib inline

matplotlib은 기본적으로 한글을 지원하지 않는다.
그래서 아래와 같이 직접 폰트 및 여러 옵션들을 설정할 수 있다.

rcParams['font.family']:폰트이름
rcParams['font.size']:폰트 크기
rcParams['figure.figsize']:(x, y)

기본 설정으로 폰트 이름과 글씨 크기, 그래프 크기 등을 조절 하거나 그래프를 그릴 때 마다 상황에 맞춰 그래프의 크기를 조절할 수 있다.

특정 폰트를 사용하는 것이 아니라 기본 한글만 출력이 되는 것으로 충분하다면 아래와 같이 koreanize_matplotlib 다운하여 사용하면 matplotlib.pyplot 안에서 한글 출력도 간단히 쓸 수 있다.

!pip install koreanize_matplotlib

import koreanize_matplotlib

이제 박스 플롯을 그려보자.
박스 플롯은 사분위수와 이상치를 확인하기 위하여 주로 사용하는 그래프다.
쇼핑몰별 판매 수량/금액 데이터를 가져와서 그래프를 그려보자.

박스 플롯은 데이터 프레임으로 그리면 하나의 컬럼이 하나의 박스 플롯으로 그려지며, 리스트를 이용하면 하나의 리스트 당 하나의 박스 플롯을 그릴 수 있게 된다.

DataFrame columns 이용

데이터 프레임으로 그리기 위해, pivot_table을 이용하여 index에는 제품을 columns에는 쇼핑몰 유형을 value에는 판매 수량으로 데이터를 가공하여 쇼핑몰 유형별(컬럼) 판매 수량을 박스 플롯을 그려보자. 이번엔 금액으로 그려보자.
금액으로 보았을 때 할인점1, 2에서 이상치가 많이 나타나는 것이 보인다.
하지만 데이터 프레임으로 그래프를 나타낼 때 'NaN'값이 있으면 그래프를 그리지 못한다. 그래서 fillna()를 통해서 NaN값에 임의의 데이터 값을 입력하게 되면 NaN값이 많은 쇼핑몰 유형은 평향되게 나타날 것이다. 이때 리스트를 이용하여 그리면 조금 더 명확하게 알 수 있다.

리스트 이용

groupby를 사용하여 '쇼핑몰 유형'별로 묶어서 판매 금액을 모두 리스트로 불러올 수 있다.Series 형식으로 불러왔기 때문에 index와 value가 1:1로 매칭이 되어 index는 이름이 value는 그래프의 값으로 입력되어 나타난다. 이 때 NaN값은 제외하고 불러오기 때문에 각 리스트의 길이는 각각 다를 수도 있다.아래와 같이 리스트로 그렸을 때에는 데이터 프레임으로 그렸을 때 보이던 편향되는 부분이 사라진 것을 볼 수 있다. 박스 플롯의 좋은 점은 각 리스트의 길이가 달라도 그래프를 그릴 수 있다는 점이다.

profile
데이터 굽는 타자기

0개의 댓글