실습_1. 시각화를 통한 자료의 요약

Updated:

범주형 자료의 요약 : 도수

범주형 자료를 요약하기 위해 도수를 계산해보겠습니다.

A, B, C, D, E 이 다섯 명이 주량을 가지고 서로 자신이 주량이 세다고 자랑을 하고 있어요! 하지만, 술자리에 참석한 횟수가 다들 달라서 공정한 대결을 할 수가 없다네요…

술 자리에 참여한 빈도 데이터를 저장한 파일인 drink.csv 파일을 이용하여 누가 제일 술자리에 자주 나왔는지 확인해보아요!

drink.csv파일은 두 가지 구성 요소가 있습니다.

  • Attend : 참석한 경우 1, 참석하지 않은 경우 0
  • 참석자의 이름

  • 문제

도수 도수는 단순히 빈도만 세어주면 됩니다.

판다스의 groupby 함수와 sum 함수를 이용하여 “Name”별 “Attend”의 합을 구할 수 있습니다.

도수를 계산한 코드를 입력하여 drink_freq 에 저장해보세요.

drink_freq = drink[drink["Attend"] == 1]["Name"].value_counts()
import pandas as pd 
import numpy as np

# drink 데이터
drink = pd.read_csv("drink.csv")


# 도수 계산
drink_freq = drink[drink["Attend"] == 1]['Name'].value_counts()


print("도수 계산")
print(drink_freq)

s_1_1.PNG

범주형 자료의 요약 : 상대도수

범주형 자료를 요약하기 위해 상대도수를 계산해보겠습니다.

A, B, C, D, E 이 다섯 명이 주량을 가지고 서로 자신이 주량이 세다고 자랑을 하고 있어요! 하지만, 술자리에 참석한 횟수가 다들 달라서 공정한 대결을 할 수가 없다네요…

술 자리에 참여한 빈도 데이터를 저장한 파일인 drink.csv 파일을 이용하여 누가 제일 술자리에 자주 나왔는지 확인해보아요!

drink.csv파일은 두 가지 구성 요소가 있습니다.

  • Attend : 참석한 경우 1, 참석하지 않은 경우 0
  • 참석자의 이름

  • 문제

상대도수 상대도수는 전체에서 도수의 비율을 계산한 값입니다.

value_counts() 함수에 normalize=True 옵션을 주면 상대도수를 구할 수 있습니다.

drink_relfreq = drink[drink["Attend"] == 1]["Name"].value_counts(normalize=True)

도수를 계산한 코드를 9번째 줄의 변수 drink_relfreq 에 저장해보세요.

import pandas as pd 
import numpy as np

# drink 데이터
drink = pd.read_csv("drink.csv")

# 상대도수 계산 
# value_counts(normalize=True)를 사용해서 상대도수를 구할수 있다
drink_relfreq = drink[drink['Attend'] == 1]['Name'].value_counts(normalize=True)

print("상대도수 계산")
print(drink_relfreq)

s_1_2.PNG

범주형 자료의 요약 : 도수분포표

범주형 자료를 효과적으로 요약할 수 있는 도수 분포표를 사용해보도록 하겠습니다.

A, B, C, D, E 이 다섯 명이 주량을 가지고 서로 자신이 주량이 세다고 자랑을 하고 있어요! 하지만, 술자리에 참석한 횟수가 다들 달라서 공정한 대결을 할 수가 없다네요…

술 자리에 참여한 빈도 데이터를 저장한 파일인 drink.csv 파일을 이용하여 누가 제일 술자리에 자주 나왔는지 확인해보아요!

drink.csv파일은 두 가지 구성 요소가 있습니다.

  • Attend : 참석한 경우 1, 참석하지 않은 경우 0
  • 참석자의 이름
  • 문제 범주형 자료의 도수분포표 두 가지의 도수분포표를 만들어보겠습니다.

도수분포표는 판다스의 crosstab 함수를 이용하여 만들 수 있고, index에는 행을, columns에는 열을 각각 지정해주면 됩니다.

crosstab 함수의 사용 예시입니다.

drink_tab = pd.crosstab(index = drink["Attend"], columns = "count")

참석 여부를 index로 설정하고, 참석한 경우와 참석하지 않은 경우를 각각 columns로 삼아 도수분포표를 만들었습니다.

  1. 참석 횟수만 계산하기 참석자와 상관없이 도수를 계산하여 drink_tab 에 저장해보세요. index에 drink[“Attend”], columns에 “count”를 넣어보세요.

  2. 개인별 참석 횟수 확인하기 누가 몇 번 참석했는지 도수를 계산하여 drink_who 에 저장해보세요. index에 drink[“Attend”], columns에 drink[“Name”]를 넣어보세요.

import pandas as pd 
import numpy as np

# drink 데이터
drink = pd.read_csv("drink.csv")


# 전체 참석 횟수를 확인하는 도수분포표
drink_tab = pd.crosstab(index = drink["Attend"], columns = 'count')

print("전체 참석 횟수를 확인하는 도수분포표")
print(drink_tab)


#누가 몇 번 참석했는지 알 수 있는 도수분포표 
drink_who = pd.crosstab(index = drink["Attend"], columns = drink['Name'])

print("누가 몇 번 참석했는지 알 수 있는 도수분포표")
print(drink_who)

s_1_3.PNG

범주형 자료의 요약 : 원형 그래프

실습1에서 계산했던 술자리 참석 빈도의 상대도수 비율을 한 눈에 보기 쉽도록 그래프를 그리겠습니다.

앞선 실습의 결과를 통해 원형 그래프를 그려보겠습니다.

  • 문제 코드 에디터에서 주석으로 표시된 Q1을 찾아 해당 위치에 알맞은 코드를 입력해주세요.

1) 원형 그래프

참석 비율(ratio)을 기준으로 원그래프 조각의 크기를 다르게 하는 코드를 Q1에 입력하여 이를 그려보겠습니다.

plt.pie(ratio,labels = labels)
plt.axis('equal')

plt.axis(‘equal’) 코드는 pie 차트의 모양을 타원형에서 원형으로 교정해주는 역할을 합니다.

  • Tips

plt.show() 함수는 만든 그래프를 보여주는 역할입니다.

아래 코드는 엘리스 플랫폼에서 그림 파일을 출력하기 위한 코드입니다!

fig.savefig("pie_plot.png")
elice_utils.send_image("pie_plot.png")
from elice_utils import EliceUtils
import matplotlib.pyplot as plt
elice_utils = EliceUtils()    
# 술자리 참석 상대도수 데이터 
labels = ['A', 'B', 'C', 'D', 'E']
ratio = [33,25,17,17,8]
    
#원형 그래프 
fig, ax = plt.subplots()

## Q1. 원형 그래프를 만드는 코드를 작성해 주세요
plt.pie(ratio,labels = labels)
plt.axis('equal')

##
plt.show()
fig.savefig("pie_plot.png")
elice_utils.send_image("pie_plot.png")

s_1_4.PNG

범주형 자료의 요약 : 막대 그래프

실습1에서 계산했던 술자리 참석 빈도의 상대도수 비율을 한 눈에 보기 쉽도록 그래프를 그리겠습니다.

앞선 실습의 결과를 통해 막대 그래프를 그려보겠습니다.

  • 문제 코드 에디터에서 주석으로 표시된 Q1를 찾아 해당 위치에 알맞은 코드를 입력해주세요.

막대 그래프 참석 비율(ratio)을 기준으로 막대그래프 막대의 크기를 다르게 하는 코드를 Q1에 입력하여 이를 그려보겠습니다.

plt.bar(labels,ratio)
  • Tips plt.show() 함수는 만든 그래프를 보여주는 역할입니다.

아래 코드는 엘리스 플랫폼에서 그림 파일을 출력하기 위한 코드입니다!

fig.savefig("bar_plot.png")
elice_utils.send_image("bar_plot.png")
from elice_utils import EliceUtils
import matplotlib.pyplot as plt
elice_utils = EliceUtils()    
# 술자리 참석 상대도수 데이터 
labels = ['A', 'B', 'C', 'D', 'E']
ratio = [33,25,17,17,8]
    
#막대 그래프
fig, ax = plt.subplots()
## Q1. 막대 그래프를 만드는 코드를 작성해 주세요

plt.bar(labels,ratio)

##
plt.show()
fig.savefig("bar_plot.png")
elice_utils.send_image("bar_plot.png")

s_1_5.PNG

수치형 자료의 요약 : 히스토그램

이번에는 실습1의 데이터에 추가로 이산형 자료인 주량 데이터 drink_cup 을 추가하겠습니다.

아래의 지시사항을 따라 히스토그램을 그리는 코드를 추가하고, 실행 버튼을 눌러 데이터가 어떻게 출력되는지 확인해보세요!

  • 문제 히스토그램 주량데이터의 cup을 가지고 히스토그램을 그려보겠습니다.

코드 입력창에 히스토그램을 그리는 코드를 입력해주세요.

plt.hist(drink_cup['cup'])
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from elice_utils import EliceUtils 
elice_utils = EliceUtils()
# 주량 데이터
drink_cup = pd.DataFrame({'cup' :[22,7,19,3,10,8,19,7,15,9,35,5],'who' : [ 'A', 'E', 'D', 'B', 'C','A','A','A','D','B', 'C','B'], 'stems' : [2,0,1,0,1,0,1,0,1,0,3,0]})

print(drink_cup)

fig, ax = plt.subplots()
## 히스토그램을 그리는 코드를 작성해 주세요

plt.hist(drink_cup['cup'])

##
plt.show()
fig.savefig("hist_plot.png")
elice_utils.send_image("hist_plot.png")

s_1_6.PNG

수치형 자료의 요약 : 줄기-잎 그림

이번에는 실습1의 데이터에 추가로 이산형 자료인 주량 데이터 drink_cup 을 추가하겠습니다.

아래의 지시사항을 따라 줄기-잎 그림을 그리는 코드를 추가하고, 실행 버튼을 눌러 데이터가 어떻게 출력되는지 확인해보세요!

문제 줄기-잎 그림 주량데이터의 cup을 가지고 줄기-잎 그림을 그려보겠습니다.

코드 입력창에 줄기-잎 그림을 그리는 코드를 입력해주세요.

plt.stem(drink_cup['stems'], drink_cup['cup'])

히스토그램과 마찬가지로 어느 구간에 주량이 모여있는지에 대한 분포를 한 눈에 볼 수 있습니다!

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from elice_utils import EliceUtils 
elice_utils = EliceUtils()
# 주량 데이터
drink_cup = pd.DataFrame({'cup' :[22,7,19,3,10,8,19,7,15,9,35,5],'who' : [ 'A', 'E', 'D', 'B', 'C','A','A','A','D','B', 'C','B'], 'stems' : [2,0,1,0,1,0,1,0,1,0,3,0]})

print(drink_cup)

fig, ax = plt.subplots()
## 줄기-잎 그림을 그리는 코드를 작성해 주세요

plt.stem(drink_cup['stems'], drink_cup['cup'])

##
plt.show()
fig.savefig("stem_plot.png")
elice_utils.send_image("stem_plot.png")

s_1_7.PNG

Leave a comment