데이터 사이언티스트 인턴을 할 때, 매니저가 알려준 라이브러리가 나왔다.
Seaborn은 matplotlib 기반으로 만들어졌기 때문에 plt 객체를 업데이트하면 sns도 같이 업데이트 된다.
import seaborn as sns
import matplotlib.pyplot as plt
x = [1,2,3,4,5]
y = [0.7,0.2,0.5,0.1,0.9]
plt.figure(figsize=(5,3))
sns.lineplot(x=x, y=y)
plt.title("Line plot")
plt.xlabel("x")
plt.ylabel("y")
plt.ylim(0,5)
plt.show()
주의할 점은 plt.figure(figsize)는 다른 plot을 그리기 전에 설정해줘야 한다.
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
driver.get("https://www.weather.go.kr/w/weather/forecast/short-term.do")
driver.implicitly_wait(1)
get_temps = driver.find_element(By.ID, "my-tchart").text
temps = [int(temp) for temp in get_temps.replace('℃','').split("\n")]
'20℃\n20℃\n20℃\n20℃\n19℃\n17℃\n16℃\n15℃\n15℃\n14℃\n14℃\n13℃\n13℃\n11℃\n11℃\n10℃\n10℃\n11℃'
import seaborn as sns
import matplotlib.pyplot as plt
plt.ylim(min(temps)-2, max(temps)+2)
plt.title("Expected temperature in Seoul")
sns.lineplot(
x = [i for i in range(len(temps))],
y = temps
)
import requests
import time
from bs4 import BeautifulSoup
frequency = {}
for i in range(1, 11):
res = requests.get("https://qna.programmers.co.kr/?/page={}".format(i), user_agent)
soup = BeautifulSoup(res.text, "html.parser")
ul_tags = soup.find_all("ul", "question-tags")
for ul in ul_tags:
li_tags = ul.find_all("li")
for li in li_tags:
tag = li.text.strip()
if tag not in frequency:
frequency[tag] = 1
else:
frequency[tag] += 1
time.sleep(0.5)
question-tags가 붙어있는 ul을 추출하고, 그 안에서 li.text를 추출한다.
그리고 frequency 딕셔너리에 저장하면
{'coding-test': 30,
'javascript': 20,
'scanf': 10,
'python': 230,
'vim': 10,
...
}
아래와 같은 형태로 추출된다.
frequency를 barplot으로 그려보자.
from collections import Counter
counter = Counter(frequency)
counter.most_common(10)
x = [i[0] for i in counter.most_common(10)]
y = [i[1] for i in counter.most_common(10)]
plt.figure(figsize=(10, 5))
sns.barplot(x=x, y=y)
커스터마이징을 더 할수도 있지만, 오버킬 같다.
아웃풋:
파이썬 질문이 가장 많다.