본문 바로가기
수업(국비지원)/Python

[Python] matplot 시각화 모듈 - 박스그래프

by byeolsub 2023. 4. 25.

<aside> 📌

### 박스그래프 : 두개의 그래프 출력하기
fig = plt.figure(figsize=(15,5)) # 그래프 출력영역, 크기 지정 
# 그래프 출력영역을 분리
ax1 = fig.add_subplot(1,2,1) # 1행 2열 첫번째 그래프 영역
ax2 = fig.add_subplot(1,2,2) # 1행 2열 두번째 그래프 영역
'''
  boxplot : matplot 모듈 함수. 박스그래프 출력
  df[df['origin'] == 'usa']['mpg'] : origin 컬럼의 값이 usa인 행만 조회. 
                                     mpg 컬럼만 가지고 옴 
  df[df['origin'] == 'japan']['mpg'] : origin 컬럼의 값이 japan인 행만 조회.
                                     mpg 컬럼만 가지고 옴     
  df[df['origin'] == 'europe']['mpg']] : origin 컬럼의 값이 europa인 행만 조회.
                                         mpg 컬럼만 가지고 옴  
  x = [usa데이터, japan데이터, europa데이터] : 박스그래프를 3개의 그룹으로 작성

  labels = ['USA','JAPAN','EU'] : X축의 값. 3개의 그룹명     

  vert = False : 가로형태의 박스그래프.     

  sym 속성 : "r*" - 이상치를 표시 할수 있는 색상, 기호 표시
             r : red, b : blue,...
             * : 별모양, s : 정사각형, + : 십자가, . : 작은점
             o : 큰점(기본값), d : 다이아몬드                            
'''
box1 = ax1.boxplot(x = [df[df['origin'] == 'usa']['mpg'],
             df[df['origin'] == 'japan']['mpg'], 
             df[df['origin'] == 'europe']['mpg']],
             labels=['USA','JAPAN','EU'],sym="b*")

box2 = ax2.boxplot(x = [df[df['origin'] == 'usa']['mpg'],
             df[df['origin'] == 'japan']['mpg'], 
             df[df['origin'] == 'europe']['mpg']],
             labels=['USA','JAPAN','EU'],vert=False)

ax1.set_title("제조국자별 연비분포(수직박스플롯)")
ax2.set_title("제조국자별 연비분포(수평박스플롯)")

 


 📌

box1

for k,item in box1.items() :
    boxdata = [item.get_ydata() for item in box1[k]]
    print(k,"=",boxdata)

'''
whiskers : 최소값 ~ 20%값, 75% 값 ~ 최대값
medians : 중간값들을 표시해 주는   
fliers : 이상치. 
'''
# get_ydata() : 이상치값 조회
[item.get_ydata() for item in box1["fliers"]]

 

📌

# df데이터를 origin 컬럼으로 그룹화 하여 그룹별 합계 출력하기
df.groupby("origin").sum()

# df 데이터를 origin 컬럼으로 그룹화 하여 그룹별 건수 출력하기
#1
df.groupby("origin").count()
#2
df.origin.value_counts()

# df데이터를 origin 컬럼으로 그룹화하여 그룹별 평균 출력하기
df.groupby("origin").mean()

# df데이터를 origin 컬럼으로 그룹화하여 그룹별 중간값 출력하기
df.groupby("origin").median()