본문 바로가기
AI/데이터 엔지니어링 데브코스

[2주차-5] 파이썬으로 웹 다루기 - 데이터 시각화

by aiant 2023. 4. 21.

Seaborn

`seaborn`은 파이썬의 데이터 시각화 라이브러리이며 이를 기반으로 수려한 그래프를 그릴 수 있다.

%pip install seaborn
import seaborn as sns

#꺾은선 그래프 그리기
sns.lineplot(x=[1, 3, 2, 4], y=[4, 3, 2, 1])

#막대 그래프 그리기
sns.barplot(x=[1,2,3,4],y=[0.7,0.2,0.1,0.05])

plot의 속성

import matplotlib.pyplot as plt
sns.barplot(x=[1,2,3,4],y=[0.7,0.2,0.1,0.05])
plt.title("Bar plot") # 제목 달기
plt.xlabel("X Label") # x축 설명 달기
plt.ylabel("Y Label") # y축 설명 달기
plt.show
plt.figure(figsize=(20,10)) # 그래프 크기 설정
sns.lineplot(x=[1, 3, 2, 4], y=[4, 3, 2, 1])
plt.ylim(2,3) # 그래프 범위 설정
plt.show()

 

WordCloud

`wordcloud`는 파이썬의 텍스트 클라우드 라이브러리입니다. 이를 기반으로 텍스트 구름을 그릴 수 있다.
`konlpy`는 한국어 형태소 분석기 라이브러리로, 주어진 문장에서 명사 등을 뽑아 내는 데에 사용할 수 있다.

해시코드(https://hashcode.co.kr) 사이트에 올라온 질문들로 워드클라우드를 만들어보는 실습을 진행해보자.

 

QnA | 프로그래머스 커뮤니티

프로그래머스 QnA는 프로그래밍 문제해결을 위한 QnA서비스입니다. 프로그래밍과 관련해서 개발자들끼리 궁금한건 물어보고 아는건 함께 나눠요. C, Java, Python, Ruby등의 코드를 웹에서 직접 실행

qna.programmers.co.kr

# 시각화에 쓰이는 라이브러리
import matplotlib.pyplot as plt
from wordcloud import WordCloud

# 횟수를 기반으로 딕셔너리 생성
from collections import Counter

# 문장에서 명사를 추출하는 형태소 분석 라이브러리
from konlpy.tag import Hannanum

 

%pip install bs4
%pip install wordcloud
%pip install konlpy
user_agent = {"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36"}

import time
import requests
from bs4 import BeautifulSoup

questions = []
for i in range(1,11):
    res = requests.get(f"https://hashcode.co.kr/?page{i}", {"User_Agent": user_agent})    
    soup = BeautifulSoup(res.text, "html.parser")

    parsed_datas = soup.find_all("li", "question-list-item")
    for data in parsed_datas:
        questions.append(data.h4.text.strip())
    time.sleep(0.5)
questions[:10]
words = []

hannanum = Hannanum()
for question in questions:
    nouns = hannanum.nouns(question) #한번 반복할 때 나오는 명사
    words+=nouns # 누적해서 나오는 명사
counter = Counter(words)


WordCloud(
    font_path = '...', #폰트 경로 붙여넣기
    background_color='...', #배경색 설정하기
    height = 1000,
    width = 1000,
)
img = WordCloud.generate_from_frequencies(counter)
plt.imshow(img)