문제: 2023년 영화별 관람자 수를 막대그래프로 표현하시오 |
1. 라이브러리 출력
표와 시각화 툴의 라이브러리를 출력한다
> pandas: 테이블(표)형식의 데이터를 다루는 라이브러리
> seaborn: 데이터를 시각화해주 라이브러리
코드 입력
|
import seaborn as sns
import pandas as pd
|
2. 데이터 입력
그래프로 표현할 값(영화 제목과 관객수를)을 각각 리스트 형태로 입력하고,
데이터 프레임(df)을 출력하면
표의 형태로 데이터를 확인할 수 있다.
코드 입력
|
movie_title = ['슬램덩크', '존윅4', '범죄도시3', '엘리멘탈', '더 마블스']
audience = [4775479, 1924768, 10682813, 7237592, 688915]
data = {'영화제목' : movie_title, '누적관객' : audience}
df = pd.DataFrame(data)
|
df |
3. 막대그래프 그리기
막대 그래프를 삽입하는 라이브러리인 sns.barplot 입력한다음
데이터프레임에서 지정해 놓은 '영화제목, 누적관객'값을 x,y축 명제에 각각 대입한다.
코드 입력 |
sns.barplot(data = df, x = '영화제목', y = '누적관객') |
상기의 코드를 출력하면, x y 값을 시각화한 막대그래프를 볼 수 있다.
4. 순서 정렬: 오름차순, 내림차순
01) 오름차순
중구난방의 데이터를, 원하는 순서 기준으로 나열하고 싶다면 order 코드를 사용한다
코드 입력 |
sns.barplot(data = df, x = '영화제목', y = '누적관객',
order = df.sort_values('누적관객').영화제목)
|
>> 기본 오름차순으로 나열이 된다.
02) 내림차순
내림차순으로 설정하기 위해서는 ascending = False 를 추가한다.
코드 입력 |
sns.barplot(data = df, x = '영화제목', y = '누적관객',
order = df.sort_values('누적관객', ascending = False).영화제목)
|
5. 정리
01) 복잡한 y축을 가시성 좋게 정리
코드 입력 |
chart = sns.barplot(data = df, x = '영화제목', y = '누적관객',
order = df.sort_values('누적관객', ascending = False).영화제목)
ylabels = ['{:,.0f}'.format(i) + '만 명' for i in chart.get_yticks() / 10000]
chart.set_yticklabels(ylabels)
|
>> ylables의 리스트 코드를 해석하자면
'{:,.0f}'.format(i) | 소수점자리는 없는 형태로 만들기 |
+ '만 명' | '만명'이라는 단위 붙이기 |
chart.get_yticks() / 10000 | '차트안에 있는 숫자 / 10000'을 해서 정수로 떨어지게 표현하기 |
02) 그 외 가시성 더하기
*차트 색상바꾸기
기존 차트 코드에 [ , color = '원하는 색상' ] 추가!
*폰트 사이즈 변경
기존 코드에 폰트 사이즈 코드 추가
코드 입력 |
plt.xlabel('누적관객', fontsize = 15)
plt.ylabel('영화제목', fontsize = 15)
plt.title('영화 별 누적관객수', fontsize = 20)
|
*차트 자체 크기 변경
코드 입력 |
sns.set(rc={'figure.figsize':(가로, 세로)}) |
출처: 패스트 캠퍼스 - 한 번에 끝내는 데이터 분석 초격차 패키지 Online: Python
'데이터 교육 > 파이썬' 카테고리의 다른 글
[파이썬] 막대그래프 그리기: countplot (0) | 2023.12.04 |
---|---|
[파이썬] 데이터 샘플: loaded_dataset (1) | 2023.11.27 |
[파이썬] 여러 데이터를 한 차트에 그리기: matplotib (1) | 2023.11.22 |
[파이썬] 단일 차트 그리기: matplotib (0) | 2023.11.13 |
[파이썬] 파이썬 라이브러리, 구글 드라이브 mount (1) | 2023.11.13 |