Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Archives
Today
Total



GitHub Contribution
Loading data ...
관리 메뉴

초보 개발자의 일기

Boston Marathon 2019 - 시각화1 (Column Chart) 본문

소소한 공부 일기/데이터 분석

Boston Marathon 2019 - 시각화1 (Column Chart)

Da다 2021. 7. 11. 18:25
 

Boston Marathon 2019_데이터 확인

학원에서 Finishers Boston Marathon 2015, 2016 & 2017 데이터셋으로 데이터 전처리와 시각화방법을 배웠는데요! 캐글에 검색해보니 Boston Marathon 2019 데이터가 있어서 복습도 할 겸 전처리와 시각화를 해보.

dada-devdiary.tistory.com

안녕하세요!

지난번에 Boston Marathon 2019 데이터를 확인해보는 글을 올렸었는데, 그동안 여러 일이 많아서 이제야 다음 글을 올리게 되었습니다... github에도 매일 잔디를 채우고 있었는데 군데 군데 빈곳이 보여서 마음이 아프네요 ㅠ

오늘은 지난번에 확인해본 데이터를 정제하고, 제 마음대로 새로운 컬럼도 넣어볼거에요! 왜냐면 연습이니까~

그럼 지금부터 시작해보겠습니당!

 

데이터 로딩

데이터를 불러오기 위해 라이브러리를 import 합니다.

import pandas as pd
import numpy as np

import matplotlib.pyplot as plt  # 시각화 라이브러리
import seaborn as sns            # 시각화 라이브러리

from tqdm import tqdm_notebook   # for문 진행상황을 게이지로 알려줍니다

 

그리고 지난번에 확인했던 Boston Marathon 2019.csv 파일을 데이터프레임으로 저장합니다.

df = pd.read_csv("Dataset-Boston-2019.csv")
df

 

불러온 파일을 출력해보면 이렇게 나와요!


column 차트

먼저 참가자의 나이(Age) 순서대로 막대차트를 그려보겠습니다.

저는 한국사람의 나이 분포를 보고싶으니까 Country가 우리나라인 데이터만 가져올게요.

국가명을 제대로 알고싶을때는 Country컬럼에서 검색해보면 됩니다.

Country = set(df.Country)
Country

 

위와 같이 저장하면 아래처럼 중복값이 없는 Country데이터만 출력됩니다.

여기에서 정확한 국가명을 찾아서 지정해줘야 그래프가 오류없이 출력되겠죠?

한국은 'Korea, Republic of'로 되어있네요!

{'Afghanistan', 'Albania', 'Algeria', 'Andorra', 'Antigua and Barbuda', 'Argentina', 'Australia', 'Austria', 'Barbados', 'Belarus', 'Belgium', 'Bermuda', 'Bhutan', 'Bolivia', 'Bosnia and Herzegovina', 'Brazil', 'Bulgaria', 'Cambodia', 'Canada', 'Cayman Islands', 'Chile', 'China', 'Colombia', 'Costa Rica', 'Croatia', 'Cuba', 'Cyprus', 'Czech Republic', 'Denmark', 'Dominican Republic', 'Ecuador', 'Egypt', 'El Salvador', 'Eritrea', 'Estonia', 'Ethiopia', 'Finland', 'France', 'Georgia', 'Germany', 'Greece', 'Guatemala', 'Guyana', 'Honduras', 'Hong Kong', 'Hungary', 'Iceland', 'India', 'Indonesia', 'Ireland', 'Israel', 'Italy', 'Jamaica', 'Japan', 'Jordan', 'Kazakhstan', 'Kenya', 'Korea, Republic of', 'Kuwait', 'Latvia', 'Lebanon', 'Lithuania', 'Luxembourg', 'Macao', 'Malaysia', 'Malta', 'Mexico', 'Moldova', 'Monaco', 'Morocco', 'Namibia', 'Nepal', 'Netherlands', 'New Zealand', 'Nicaragua', 'Norway', 'Pakistan', 'Palestine', 'Panama', 'Paraguay', 'Peru', 'Philippines', 'Poland', 'Portugal', 'Puerto Rico', 'Romania', 'Russia', 'Serbia and Montenegro', 'Singapore', 'Slovakia', 'Slovenia', 'South Africa', 'Spain', 'Sri Lanka', 'Sweden', 'Switzerland', 'Taiwan', 'Thailand', 'Trinidad and Tobago', 'Turkey', 'Uganda', 'Ukraine', 'United Arab Emirates', 'United Kingdom', 'United States', 'Uruguay', 'Uzbekistan', 'Venezuela', 'Vietnam'}

 

정확한 국가명을 찾아서 데이터를 추출해줍니다.

# 한국인 데이터만 가져오기
KOR_runner = df[df.Country=='Korea, Republic of']
KOR_runner

 

국적이 대한민국인 사람은 156명이 참가한 것 같아요.

 

이제 그래프를 그려볼게요!

# column 그래프 그리기(필수)
plt.figure(figsize=(20, 7))                                # 그래프 크기
runner_Age = sns.countplot('Age', data=KOR_runner)         # 그래프 함수 : sns.countplot() 사용

# column 그래프 부가 설명(옵션)
runner_Age.set_title('Number of runner by AGE - KOR', fontsize=25)     # 제목
runner_Age.set_xlabel('Age', fontdict={'size':16})                     # x축 이름
runner_Age.set_ylabel('Number of runner', fontdict={'size':16})        # y축 이름
plt.show()

 

코드를 입력하면 위와 같은 그래프가 출력됩니다. but, 그래프는 잘 나오는데 경고가 뜨는 경우가 있어요!

그 경고는 그래프 인자의 순서에 대한 거라서 무시하셔도 됩니당.

경고가 나오는게 싫으시다면 아래 코드를 추가해주세요.

# 파이썬 warning 무시
import warnings
warnings.filterwarnings(action='ignore')

 

그래프를 보니 50대 인구가 가장 많이 참여한걸 알 수 있습니다. 


Column 차트 2

이번에는 나이별, 성별별 그래프를 그려볼게요.

# column 그래프 그리기(필수)
plt.figure(figsize=(20, 10))                                                                  # 그래프 크기
runner_Age = sns.countplot('Age', data=KOR_runner, hue='Gender', palette={'F':'y', 'M':'g'})  # 그래프 함수 : sns.countplot() 사용
                                                      # hue : 컬럼명 기준으로 데이터를 구분해줍니다
# column 그래프 부가 설명(옵션)
runner_Age.set_title('Number of runner by Age, Gender - KOR', fontsize=18)   # 제목
runner_Age.set_xlabel('Age', fontdict={'size':16})                     # x축 이름
runner_Age.set_ylabel('Number of runner', fontdict={'size':16})        # y축 이름
plt.show()

나이별, 성별별 그래프를 확인한 결과, Male(남성)이 훨씬 더 많이 참가했네요!

데이터를 시각화하면 이렇게 한눈에 정보를 파악할 수 있는 장점이 있습니다.


오늘은 column chart를 이용해서 간단한그래프 2가지를 그려봤습니다.

다음 시간에는 파레토차트를 그려보도록 할게요~ 맛저하세요!

Comments