1 분 소요

Matplotlib 퀴즈

다음은 대한민국 영화 중에서 관객 수가 가장 많은 상위 8개의 데이터입니다.

주어진 코드를 이용하여 퀴즈를 풀어보시오.

import pandas as pd
import matplotlib.pyplot as plt
import matplotlib
matplotlib.rcParams['font.family'] = 'Malgun Gothic' # Windows
# matplotlib.rcParams['font.family'] = 'AppleGothic' # Mac
matplotlib.rcParams['font.size'] = 15
matplotlib.rcParams['axes.unicode_minus'] = False

data = {
    '영화' : ['명량', '극한직업', '신과함께-죄와 벌', '국제시장', '괴물', '도둑들', '7번방의 선물', '암살'],
    '개봉 연도' : [2014, 2019, 2017, 2014, 2006, 2012, 2013, 2015],
    '관객 수' : [1761, 1626, 1441, 1426, 1301, 1298, 1281, 1270], # (단위 : 만 명)
    '평점' : [8.88, 9.20, 8.73, 9.16, 8.62, 7.64, 8.83, 9.10]
}
df = pd.DataFrame(data)
df
영화 개봉 연도 관객 수 평점
0 명량 2014 1761 8.88
1 극한직업 2019 1626 9.20
2 신과함께-죄와 벌 2017 1441 8.73
3 국제시장 2014 1426 9.16
4 괴물 2006 1301 8.62
5 도둑들 2012 1298 7.64
6 7번방의 선물 2013 1281 8.83
7 암살 2015 1270 9.10

1) 영화 데이터를 활용하여 x축은 영화, y축은 평점인 막대 그래프를 만드시오.

plt.bar(df['영화'],df['평점'])
<BarContainer object of 8 artists>

2) 앞에서 만든 막대 그래프에 제시된 세부 사항을 적용하시오.

  • 제목 : 국내 Top 8 영화 평점 정보

  • x축 label: 영화 (90도 회전)

  • y축 label: 평점

plt.bar(df['영화'],df['평점'])
plt.title('국내 Top 8 영화 평점 정보')
plt.xlabel('영화')
plt.xticks(rotation=90)
plt.ylabel('평점')
plt.show()

3) 개봉 연도별 평점 변화 추이를 꺾은선 그래프로 그리시오.

연도별 평균 데이터를 구하는 코드는 다음과 같습니다.

df_group = df.groupby('개봉 연도').mean()
df_group
관객 수 평점
개봉 연도
2006 1301.0 8.62
2012 1298.0 7.64
2013 1281.0 8.83
2014 1593.5 9.02
2015 1270.0 9.10
2017 1441.0 8.73
2019 1626.0 9.20
plt.plot(df_group.index,df_group['평점'])
[<matplotlib.lines.Line2D at 0x177bf12e3a0>]

4) 앞에서 만든 그래프에 제시된 세부 사항을 적용하시오.

  • marker:’o’

  • x축 눈금:5년 단위(2005, 2010, 2015, 2020)

  • y축 범위:최소 7, 최대 10

plt.plot(df_group.index,df_group['평점'],marker='o')
plt.xticks([2005, 2010, 2015, 2020])
plt.ylim(7,10)
plt.show()

5) 평점이 9점 이상인 영화의 비율을 확인할 수 있는 원 그래프를 제시된 세부 사항을 적용하여 그리시오.

  • label: 9점 이상 / 9점 미만

  • 퍼센트: 소수점 첫째자리까지 표시

  • 범례: 그래프 우측에서 표시

filt = df['평점'] >= 9.0
values = [len(df[filt]),len(df[~filt])]
labels = ['9점 이상', '9점 미만']

plt.pie(values, labels=labels, autopct='%.1f%%')
plt.legend(loc=(1,0.3))
plt.show()

댓글남기기