codestates / ds-blog

blog sharing for data science bootcamp course
2 stars 4 forks source link

[오세광]Day5 데이터 시각화 플롯의 종류와 라이브러리를 활용하여 데이터 시각화 해보기! #66

Open sekwangoh opened 4 years ago

sekwangoh commented 4 years ago

데이터 시각화 플롯을 활용하여 데이터 시각화 해보기!

오늘, 저는 데이터 시각화 플롯의 종류에 대해 설명하고자 합니다. 간단한 플롯이 무엇이고, 그 플롯을 활용하여 데이터를 어떻게 시각화가 가능한지 소개할 것입니다. 추후에는 몇가지 툴과 라이브러리를 활용하여 자신의 데이터 혹은 지인(특히, 자영업)이 가지고 있는 엑셀데이터를 통해 시각화해볼 수 있는 방법을 알아보도록 하겠습니다.

데이터 시각화 플롯

https://miro.medium.com/max/1920/1*-LneXZJ21to_3zzJlIun3g.jpeg

이미지 출처 : https://www.meltwater.com/en/blog/top-5-data-visualization-tools-of-2018-and-theyre-free

플롯이란

아래와 같이 “데이터 “데이터 셋을 재표현하기 위한 그래픽적인 기술”이라고 합니다. 일종의 데이터를 시각화하여 사람이 직관적으로 이해할 수 있도록 만드는 기술이라고 할 수 있죠. 우리가 무엇인가 말로 설명하다가 잘 되지 않을 때 그림을 그리듯, 복잡한 데이터도 시각화하여 설명하는 것이 효과적일 때가 있습니다. 그래서 이렇게 시각화하는 플롯을 다양하게 있습니다.

A plot is a graphical technique for representing a data set, usually as a graph showing the relationship between two or more variables. 출처 : 위키피디아([<https://en.wikipedia.org/wiki/Plot_(graphics)>](<https://en.wikipedia.org/wiki/Plot_(graphics)>)

플롯(Plot)의 종류

https://miro.medium.com/max/1600/1*lmXyzYVicEFSgFJ0tY_-hQ.jpeg

이미지 출처 : https://www.boostlabs.com/10-types-of-data-visualization-tools/

플롯은 이해하기 쉽도록 주변에서 찾아보면 대선 지지율 혹은 선거 결과를 나타내는 시각적인 것들이다.

출처 : 리얼미터 & http://polinews.co.kr/news/article.html?no=473365

1. 선 그래프(Line plot)

각 수치를 선으로 표현한 것이다.

https://miro.medium.com/max/680/1*dIrpi1jmDAYUIqJ6XEPKtg.png

2. 막대 그래프(bar plot)

각 수치를 막대 형태로 표현할 것이다.

https://miro.medium.com/max/800/1*jRuBF75ZZSbikMLrk3fK_w.png

“표현 값에 비례하여 높이와 길이를 지닌 직사각형 막대로 범주형 데이터를 표현하는 차트나 그래프를 말한다. 막대는 수직으로나 수평으로 그릴 수 있다.”

출처 : 위키피디아(https://ko.wikipedia.org/wiki/막대_그래프)

3. 카토그램 (cartogram plot)

어떤 데이터 값에 따라서 지도의 면적이 달라지도록 표현한 방식입니다.

“의석수나 선거인단수, 인구 등의 특정한 데이터 값의 변화에 따라 지도의 면적이 왜곡되는 그림”

출처 : 위키피디아(https://ko.wikipedia.org/wiki/카토그램)

https://miro.medium.com/max/640/1*QnEXlqGUJlPPIBuoKwIF1g.jpeg

출처 : KBS 데이터저널리즘팀(http://mn.kbs.co.kr/news/view.do?ncd=4426174)

4. 다양한 형태의 플롯

이와 같이 플롯은 주위에서 자주 사용하는 툴이다. 하지만 이 글을 읽으면서 더 많은 종류의 플롯은 무엇이 있을지 궁금하실 수 있다. 다양한 플롯의 종류를 확인해보고 싶으시면 링크를 통해 확인해볼 수 있습니다.

(링크 : MATLAB Plot Gallery)

5. 데이터에 맞는 플롯 유형 선택

아직 이 부분에 대해서 스스로 많은 경험을 가지고 있지는 않습니다. 앞으로 시각화 해나가면서 그 상황에 맞는 플롯들을 접해보며, 업데이트 해나갈 예정입니다.

궁금하신 부분은 아래의 링크를 참조해보세요 :)

(링크 : [https://help.tableau.com/current/pro/desktop/ko-kr/what_chart_example.htm]

데이터 시각화 Python 라이브러리 활용하여 해보기!

저는 개인적으로 접한 언어가 Python이기도 하고, 초심자가 쉽게 접할 수 있는 언어인 python으로 시각화할 수 있는 라이브러리를 활용하여 실제 해보는 과정을 소개해보려고 합니다.

Google Colab(Google Colaboratory) 사용하기

우선 간단하게 실제 실행해볼 수 있는 툴을 소개합니다. 구글 코랩이라고 실제 간단히 실행해볼 수 있는 툴입니다. 가볍게 실제 어떤 것들을 실행해볼 수 있는지 실행해볼 수 있습니다.

1. 우선 구글 가입과 로그인하고, 구글 크롬을 설치한다.

구글 가입과 로그인 :https://support.google.com/accounts/answer/27441?hl=ko

구글 크롬 설치하기 : https://support.google.com/chrome/answer/95346?co=GENIE.Platform%3DDesktop&hl=ko

2. Google Colab 실행하기

a. 크롬 브라우저 아래 링크를 입력하고 실행 시킨다.

https://miro.medium.com/max/1844/1*O5rsK-sic4fYyrhzDu2Rsw.png

https://colab.research.google.com/notebooks/intro.ipynb

b. 새로운 노트북를 만든다.

https://miro.medium.com/max/1846/1*dzK87dAQrk2okY5wUYw-hQ.png

C. 새로운 노트북에서 입력을 시작한다.

https://miro.medium.com/max/1920/1*WgiSsAbDXEm2cnbWQmOBRg.png

3. 실제 입력해보기

3명의 친구 (john, micheal, smith)의 수학, 영어, 컴퓨터 성적이 있다고 할 때 pandas를 통해서 그 데이터들은 자신이 원하는 plot으로 나타내 보는 것이 가능하다.

colab notebook에서 아래와 같은 코드를 입력하여 shift + enter를 누르면 아래의 이미지와 같이 실행 된다.

(P.S 추가적으로 판다스를 활용하는 방법에 대해 궁금한 분들은 아래의 링크를 참조하여 활용하면 조금 더 자세히 알 수 있습니다.

https://www.edwith.org/boostcourse-ds-510/joinLectures/28138 ⇒ 2. 데이터 분석 준비하기 ⇒ 2.2 판다스 치트시트 활용한 기초 익히기)

import pandas as pd
import numpy as npdf = pd.DataFrame(
{"math" : [100 ,90, 85],
"english" : [90, 85, 95],
"computer" : [100, 95, 90]},
index = ["john", "michael", "smith"])display(df)
df.plot.bar()
df.plot.line()
df.plot.box()

https://miro.medium.com/max/537/1*7fnuwMJhX847d4Ge2_mLiA.png

이렇게 다양한 형태로 시각화를 할 수 있습니다. 몇 가지의 코드를 가지고 해볼 수 있습니다.

주피터 노트북을 활용하여 실제 데이터로 시각화해보기!

엑셀 실제 데이터를 CSV데이터로 변환

엑셀 데이터를 CSV파일로 바꾸어서 쥬피터 노트북에서 실행될 수 있도록 하였습니다. 그 매출데이터를 2018년 9월 추석 전후 3일 동안 매출이 어떤 식으로 변화하였는지 시각화하였습니다.

#!/usr/bin/env python
# coding: utf-8

# In[510]:

get_ipython().run_line_magic('mv', '/Users/ohsekwang/dataset/실험데이터9edit7.csv .')

# In[512]:

import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
#
get_ipython().run_line_magic('matplotlib', 'inline')

# In[513]:

df_raw = pd.read_csv("실험데이터9edit7.csv", encoding="utf-8")
df_raw

# In[514]:

df_raw.columns

# In[515]:

df =df_raw[[" 총매출"]]
df

# In[525]:

## 추석 전 후 3일동안 매출추세
df.plot.bar()
df.plot.line()

# In[ ]:

위에 데이터들을 실제 입력해보면

df_raw = pd.read_csv("실험데이터9edit7.csv", encoding="utf-8"), df_raw

Screen Shot 2020-09-07 at 8 36 21 AM

df =df_raw[[" 총매출"]], df

Screen Shot 2020-09-07 at 8 36 58 AM

df.plot.bar()

Screen Shot 2020-09-07 at 8 37 29 AM

df.plot.line()

Screen Shot 2020-09-07 at 8 39 07 AM

시각화해보면서

다음과 같이 실제 데이터를 시각화해 보면서 실제 유의미한 시각화를 위해서는 어떤 데이터를 쌓아나갈 지 미리 생각을 많이 해야 함을 느낍니다.
barplot을 통해 각 매출별 차이를 한 눈에 비교할 수 있어서 좋고, lineplot은 그 추세를 조금 더 확실하게 볼 수 있어서 좋습니다.

실제 시각화를 시도한다면, 이 실제 데이터에서 어떤 인사이트를 도출할 것인지? 나에게 어떤 데이터가 필요한 것인지를 스스로 판단하면서 데이터를 쌓아나가는 게 선행되야 함을 느낍니다.

간단한 시각화를 시도하기에 편리한 툴이 되길 바랍니다.

오늘을 마치며

데이터의 종류를 설명하고, 데이터를 시각화하는 과정 그리고 실제 데이터를 바탕으로 하는 과정을 진행하려고 했습니다. 그런데 생각보다, 실제 데이터를 colab으로 가져오는 과정에서 복병을 만났습니다. 그래서 쥬피터 노트북을 활용하여 실제 엑셀데이터를 가공해서 시각화할 수 있는 방법을 알아봤습니다.

다음에는 조금 다양한 방식으로 데이터를 가공하고, 라이브러리를 활용하여 다양한 형태의 시각화를 시도해볼 예정입니다.

https://medium.com/@osktr5/%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%8B%9C%EA%B0%81%ED%99%94-%ED%94%8C%EB%A1%AF%EC%9D%98-%EC%A2%85%EB%A5%98%EC%99%80-%EC%8B%9C%EA%B0%81%ED%99%94-b9da16b8fcc6

jhan8823 commented 4 years ago

조금 더 각 시각화에 대한 설명이나 쓰임새, 장단점 등에 대해 설명이 부족합니다. 세광님의 단어로 설명하는 글이 된다면 더 완성도가 올라갈 것 같습니다. 데일리 스탠드업에서 세광님이 원하시는 글과 원하시는 독자층을 들었기 때문에 더 그분들이 이해할 수 있는 글을 쓰시면 될 것 같습니다. 1점

sekwangoh commented 4 years ago

조금 더 각 시각화에 대한 설명이나 쓰임새, 장단점 등에 대해 설명이 부족합니다. 세광님의 단어로 설명하는 글이 된다면 더 완성도가 올라갈 것 같습니다. 데일리 스탠드업에서 세광님이 원하시는 글과 원하시는 독자층을 들었기 때문에 더 그분들이 이해할 수 있는 글을 쓰시면 될 것 같습니다. 1점

네 정민님! 코멘트 해주신 내용 잘 읽었습니다. 조금 더 보완하여 제출하겠습니다. 코멘트 감사합니다. :)

jhan8823 commented 4 years ago

세광님 글 잘 읽었습니다. 다만 아쉬운 점은 세광님이 목표하셨던 이 시각화를 해보실 자영업자분들 기준에서 과연 코드를 이해하고 실습을 해보실 수 있을지 의문점이 듭니다. 시각화는 전체적인 데이터의 분포를 이해하는데 중요한 도구입니다. 하지만 시각화를 한 후에 설명이 없다면 사실 팥 없는 호빵처럼 아쉬운 도구가 되버립니다. 그리고 세광님의 시각화를 보시면 한글이 깨져있는 것을 볼 수 있는데요, 이 플롯들이 어떤 것을 보여주고, 어떤 인사이트를 도출 할 수있는지 세광님의 생각을 녹여주셨으면 조금 이해하기 쉽고 좋은 글이 될 것 같습니다. 고생하셨습니다 2점

sekwangoh commented 4 years ago

세광님 글 잘 읽었습니다. 다만 아쉬운 점은 세광님이 목표하셨던 이 시각화를 해보실 자영업자분들 기준에서 과연 코드를 이해하고 실습을 해보실 수 있을지 의문점이 듭니다. 시각화는 전체적인 데이터의 분포를 이해하는데 중요한 도구입니다. 하지만 시각화를 한 후에 설명이 없다면 사실 팥 없는 호빵처럼 아쉬운 도구가 되버립니다. 그리고 세광님의 시각화를 보시면 한글이 깨져있는 것을 볼 수 있는데요, 이 플롯들이 어떤 것을 보여주고, 어떤 인사이트를 도출 할 수있는지 세광님의 생각을 녹여주셨으면 조금 이해하기 쉽고 좋은 글이 될 것 같습니다. 고생하셨습니다 2점 네! 정민 피드백 주신 내용 공감합니다. 타켓을 세우고 그 분들을 목표로 필요한 데이터와 인사이트를 인터뷰해보고 했는데 어렵다는 생각이 들었습니다. 그리고 설명이 필요한 부분이 있음을 느낍니다. 말씀해주신 내용대로 그 분들이 사용해볼 수 있는 가이드로 개선하여 추가적으로 팔로업해서 업그레이드해 나갈 예정입니다. ㅎㅎ 다시금 읽어보시고 코멘트 주셔서 정민님 감사합니다.