Python/Visualization

[Python] matplotlib으로 스타벅스 데이터 시각화 하기

언킴 2021. 9. 22. 11:37
반응형

스타벅스 데이터를 구할 수 있어서 그 자료를 가지고 간단하게 시각화해보자.

 

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
import os
import matplotlib.font_manager as fm
plt.rcParams['font.family'] = 'NanumGothic'

필요한 라이브러리는 다음과 같다. 스타벅스 코리아, 즉 한국에 입점한 스타벅스 데이터를 가지고 오는거라 위도, 경도 주소 등 여러 데이터가 포함되어 있어서 한글 폰트를 받아와야한다. 나눔 고딕 폰트를 선호해서 해당 폰트로 진행을 했다. ( 음수일 경우 표시가 안된다는 단점이 있다.. )

 

 

# 현재의 directory 를 체크한다.
os.getcwd()

# path에는 데이터가 있는 위치를 입력해준다.
path = r''

# 경로를 지정한다.
os.chdir(path)

# load file
file = 'file name'
starbucks = pd.read_csv(file) # encoding = 'utf-8'

처음 getcwd()로 지금 현재 위치를 확인하고 데이터파일을 불러오기 위해 세팅을 하는 과정이다. path를 보면 r-string을 사용했는데, 만약 사용하지 않으면 '\' 와 같은 문자를 인식하지 않기 때문에 r-string을 사용해 경로를 가지고왔다. 

 

pd.read_csv의 encoding의 기본값은 'utf-8'로 되어있는데 데이터에 따라 다르게 호출해야한다.  (e.g.  'euc-kr', 'cp949' etc.. ) txt 파일 역시 read_csv로 호출할 수 있지만 excel file (xls, xlsx, ..) 같은 경우에는 pd.read_excel을 통해 호출해야한다. 

 

 

# 불러온 데이터의 대략적인 분포를 볼 수 있다.
starbucks.info()

# 상위 항목을 볼 수 있다.
starbucks.head()

# 하위 항목을 볼 수 있다.
starbucks.tail()

# 수치형 변수를 볼 수 있다.
starbucks.describe()

# ['시도'] columns의 값들의 갯수를 확인할 수 있다.
starbucks['시도'].value_counts()

데이터가 어떻게 생겼는지 대략적으로 확인을 하는 단계이다. 필요에 맞게 원하는 값을 출력해서 볼 수 있다. 

 

# default
plt.figure(figsize = (7, 7), dpi=100)
starbucks.plot()
plt.show()

처음 plt.figure를 통해 화면의 사이즈를 지정해준다. dpi는 그림의 해상도라고 보면 된다. 해상도 값이 높아질수록 더 선명한 plot을 볼 수 있지만 그만큼 용량이 커지기 때문에 고화질을 보려면 거의 200 정도를 지정한다. figsize 는 가로세로 크기를 지정하는 인자다. 위와 같이 df.plot()을 하게 되면 수치형 변수의 그래프를 그려주게 된다. 이때 default는 x축이 index가 되며, numerical columns들이 y축이 된다. 마지막으로 plt.show()를 해주면서 그림을 보여준다. 

 

seoul = starbucks[starbucks['시도'] == '서울시'].groupby(['시군구']).count()['매장명']


plt.figure(figsize =(7, 7), dpi = 100)
plt.plot(seoul.sort_values(ascending=False))
plt.xticks(np.arange(len(seoul)), label = seoul.sort_values(ascending=False).index, rotation = 40)
plt.show()


# pie chart
plt.figure(figsize = (7, 7))
seoul.plot(kind ='pie' )
plt.xticks(rotation = 50)
# plt.savefig('pie chart.png')
plt.show()


# bar chart
plt.figure(figsize = (7, 7))
seoul.plot(kind='bar')
plt.show()

# histogram
plt.figure(figsize = (7, 7))
seoul.plot(kind='hist', bins = 50)
plt.show()

# density
plt.figure(figsize = (7, 7))
seoul.plot(kind='density')
plt.show()

pie, bar, histo, density 등 여러 그림을 그릴 수 있고, 각 항목의 method를 조금씩 바꿔가면서 그림이 어떻게 생겼는지 확인해보는 것도 많이 도움이 된다. pie chart의 경우 rotatelabels method를 통해 labels을 회전시켜 가독성이 좋게 그림을 그릴 수 있다. matplotlib의 경우 여러 조건들을 추가해 많은 값을 넣을 수 있게된다.

(subplot, xlabel, xticks, legend, etc...) 직접 수정해가면서 하면 더욱 공부가 된다.

'Python > Visualization' 카테고리의 다른 글

[t-SNE] manifold 데이터 시각화하기  (0) 2022.03.19
[Python] matplotlib 시작하기  (0) 2022.02.25
[Python] Monte Carlo algorithm  (0) 2022.01.14