이번 글도 간단한 시각화 파트이다. 히스토그램 그리기! 이미지를 클릭하면 강의 사이트로 이동한다.
가입 시 5천원 주는 추천인 코드: EQQW-36EH-JY4P 추가해주시면 감사합니다.
🔥 강의 목차
오리엔테이션
파이썬 기초 문법
데이터 전처리
데이터 시각화
마케팅 데이터 분석 및 지표 정의하기
🔥 마케팅 데이터 전처리 &자동화 프로젝트(5) 히스토그램
이번에는 히스토그램(histogram) 그리기. 히스토그램은 데이터의 분포를 시각적으로 나타낼 때 사용한다. 예를 들어, 고객의 연령대 분포, 제품 가격대 분포 등 데이터의 빈도수를 보여주는 데 적합하다.
아래는 히스토그램을 그리는 코드스니펫
import pandas as pd
import plotly.express as px
# 히스토그램 생성
fig = px.histogram(
df, # 사용할 데이터셋
x='col_1', # x축에 사용할 열 이름
color='col_2', # 색상으로 구분할 카테고리 열 이름
barmode='stack/overlay/group', # 막대 모드 설정 (group/overlay/stack 중 선택)
marginal="rug", # margin에 추가적인 데이터 포인트 분포 표시
title='histogram', # 히스토그램의 제목
# nbins= 10 # 막대의 개수
)
# 히스토그램 표시
fig.show()
이번에 사용할 데이터는 seaborn 라이브러리에 있는 'iris' 데이터이다.
import seaborn as sns
iris = sns.load_dataset('iris')
1) 기본적인 히스토그램 그리기
기본 히스토그램은 아래와 같이 그린다. sepal_length(꽃잎의 길이)에 대한 히스토그램을 그리고, 종별로 색을 다르게 표시했다.
import plotly.express as px
# 히스토그램 생성
fig = px.histogram(
iris, # 사용할 데이터셋
x='sepal_length', # x축에 사용할 열 이름
color='species', # 색상으로 구분할 카테고리 열 이름
title='histogram', # 히스토그램의 제목
)
fig.show()
setosa 종은4~6, versicolor 종은 4~7, virginica 종은 5~8 정도의 길이 분포를 가진다.
2) 기타 옵션들(add_vline/vrect/annotation, update_xaxes)
기타 옵션들을 정리한 코드 스니펫을 참고할 수 있다.
# 세로선 추가
fig.add_vline(
x=20, # 세로선의 x축 위치
line_color="red/blue/green" # 선의 색상
)
# 가로선 추가
fig.add_hline(
y=20, # 가로선의 y축 위치
line_color="red/blue/green" # 선의 색상
)
# 주석 추가
fig.add_annotation(
x=20 , # 주석의 x축 위치
y=30 , # 주석의 y축 위치
text="텍스트" # 표시할 텍스트
)
# 세로 스팬 추가
fig.add_vrect(
x0='20', # 스팬의 시작 x축 위치
x1='2019-03-15', # 스팬의 종료 x축 위치
fillcolor="red/blue/green", # 스팬의 색상
opacity=0.5, # 스팬의 불투명도
)
# x축 범위 설정 (예: 0부터 20까지)
fig.update_xaxes(range=[0, 20])
# y축 범위 설정 (예: -5부터 5까지)
fig.update_yaxes(range=[-5, 5])
실제 iris 데이터로 히스토그램 그래프를 그려 보면...
import plotly.express as px
# 히스토그램 생성
fig = px.histogram(
iris, # 사용할 데이터셋
x='sepal_length', # x축에 사용할 열 이름
# color='col_2', # 색상으로 구분할 카테고리 열 이름
# barmode='stack/overlay/group', # 막대 모드 설정 (group/overlay/stack 중 선택)
# marginal="rug", # margin에 추가적인 데이터 포인트 분포 표시
# title='histogram', # 히스토그램의 제목
nbins= 30 # 막대의 개수
)
# 세로선 추가
fig.add_vline(
x=6, # 세로선의 x축 위치
# line_color="red/blue/green" # 선의 색상
)
# 가로선 추가
fig.add_hline(
y=6 # 세로축의 x 위치
# line_color = 'red/blue/green' # 선의 색상
)
# 주석 추가
fig.add_annotation(
x=6, # 주석의 x축 위치
y=15, # 주석의 y축 위치
text='텍스트' # 표시할 텍스트
)
# 세로 스팬
fig.add_vrect(
x0='5.5', # 스팬의 시작 x축의 위치
x1='6.5', # 스팬의 종료 x축 위치
fillcolor = 'red', # 스팬의 불투명도
opacity=0.2, # 투명도 조절
)
# 이것도 y로 바꿔서 쓰면 가로 스팬 지정 가능
# 히스토그램 표시
fig.show()
이렇게 표시된다.
위에서는 임의로 x축 위치 6, y축 위치 6에 선을 그었다.
데이터의 평균값을 구해서 x, y축에 선을 그어보면 아래와 같이 쓸 수 있다.
# 평균구하기
avg = iris.sepal_length.mean()
std = iris.sepal_length.std()
# 그래프 생성
fig = px.histogram(
iris,
x= 'sepal_length',
height = 500, # 넓이
width = 700 # 높이
)
# 세로 선 삽입(평균 위치에)
fig.add_vline(
x=avg
)
# 평균을 주석으로 달기
fig.add_annotation(
x=avg,
y=30,
text='{:.2f}'.format(avg)
)
# 표준편차를 이용하여 사분위범위 구하기
fig.add_vrect(
x0= avg-std
, x1=avg+std
, fillcolor = 'red'
, opacity = 0.2
)
# 평균값을 선으로 넣어보기
fig.show()
plotly 라이브러리에 다양한 그래프들이 있어 당분간은 그래프 그리는 방법들을 정리할 것 같다.
이번주도 파이팅!ㅁ! 🔥🔥🔥
* 본 게시글은 '메타코드'의 동의를 받아 작성된 글로, 강의 내용에 대한 모든 저작권은 Ringo 선생님에게 있습니다. 개인용도의 학습 외에 무단사용은 엄격히 금지됩니다. 위반 시 법적 조취가 취해질 수 있습니다.