본문 바로가기
Python

[python] pandas 차트 생성

by 앗사비 2021. 12. 24.
728x90

오랜만에 해보니 셀레늄 문법이 일부 바뀜

 

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager #현재 설치된 크롬 사용
from selenium.webdriver.common.by import By
import pandas as pd

chrome_service = Service(ChromeDriverManager().install())
chrome_options = webdriver.ChromeOptions() 
chrome_options.add_argument('headless') #브라우저가 백그라운드로 실행
driver = webdriver.Chrome(service=chrome_service,options=chrome_options)

driver.get('https://~~')
driver.find_element(By.NAME, 'stime').clear()
driver.find_element(By.NAME, 'stime').send_keys('20210101')
driver.find_element(By.NAME, 'stime').submit()
html=driver.page_source

df = pd.read_html(html)[1] #숫자값으로 테이블 순서 선택
df = df[['국내', '글로벌']] #열 선택 https://wikidocs.net/151189
df = df.rename(columns = {
    '국내':'kor', '글로벌':'global'
}) #열 이름 변경
print(df)

chart = df.plot.line() #차트 종류는 선
chart.figure.savefig('chart.png')

driver.close()

 

차트를 더 정교하게 바꾸려면

import matplotlib.pyplot as plt
import matplotlib.ticker as ticker

df['date'] = df['date'].astype(str) #x값이 깨지면 형 변환
df['date'] = df['date'].str.slice(start=4) # x값 문구 길이 조정

plt.figure(figsize=(7,4)) #크기 비율
plt.title('hello',fontsize=20) # 타이틀 설정
plt.plot(df['date'],df['kor'],label='kor') #x,y 값으로 사용할 df 열 선택
plt.plot(df['date'],df['global'],label='global')
plt.xticks(rotation=45) #x값 겹치지 않게 회전
plt.legend() #범례 : plot의 라벨값 가져오기

ax = plt.gca() #현재 차트 정보 가져오기
ax.xaxis.set_major_locator(plt.MultipleLocator(20)) #눈금 간격

plt.show()

 

추세선 추가하기 (30 이평선인 경우)

plt.plot(df['date'], df.rolling(window=30).mean()['kor'])
728x90