728x90
📝Plotly 는?
- 파이썬의 대표적인 인터랙티브 시각화 도구
- 자바스크립트의 동적인 시각화 기능
- seaborn과 사용법 비슷
📝Plotly.express ( = px ) 라이브러리
✅ px.data.iris()
- DataFrame형태를 입력으로 넣고, 구성요소만 지정해주면 쉽게 구현이 가능
- px.data 제공 데이터셋중 하나인 iris 불러오기
import plotly.express as px
import pandas as pd
df = px.data.iris() #px.data에서 기본 제공하는 데이터셋 중 하나인 iris(붓꽃) 데이터
fig = px.scatter(df, x="sepal_width", y="sepal_length", color='petal_length')
fig.show()
✅ px.data.stocks()
더보기
- px.data 제공 데이터셋중 하나인 stock 불러오기
- '구글' 종목만 가져오기
df = px.data.stocks()
fig = px.line(df, x='date', y='GOOG', height=300 ) # height로 그래프의 높이 지정
fig.show()
- 종목 전체 가져오기(px)
# set_index로 date컬럼 앞에 순차적으로 번호 부여(인덱스)해서 x축으로 설정)
px.line(df.set_index('date'), height=300)
- 종목 전체 가져오기(판다스)
df.plot(figsize=(12,4),grid = True)
✅ 종목들의 일별 수익률
df_1 = df.set_index('date') -1
# 시작한 날을 기준으로 삼기위해 -1
- 종목들의 일별 수익률 - (판다스로 시각화)
df_1.plot(kind ='bar', figsize=(16,6))
- 종목들의 일별 수익률 - (plotly.express로 시각화)
px.bar(df_1,height=400)
✅ facet_col
# px.area 로 수익률 분포를 그립니다.
# facet_col 을 통해 서브플롯을 그릴 수 있습니다.
# facet : 측면, 양상
px.area(df_1,facet_col = 'company', facet_col_wrap = 2)
✅ hover_data
- 그래프에 커서 대면 나오는 데이터 (날짜) 수정
- 연월일 형식앞에 | 붙여주는 건 plotly의 약속!!! API 규칙!
hover_data={"date": "|%Y-%m-%d"}
px.line(df, hover_data={'date': '|%Y-%m-%d'})
✅ Range_slider
- x축 과 y축의 설정정 위해서는 각각 update_xaxes 메소드와 update_yaxes 메소드를 활용
fig = px.line(df_1['GOOG'], title = '구글 주가')
fig.update_xaxes(rangeslider_visible=True)
📝Simple Candlestick (캔들스틱)
- 캔들스틱 차트(영어: Candlestick chart) 또는 봉차트
- 일본식 캔들스틱 차트는 주식을 비롯한 유가증권과 파생상품, 환율의 가격 움직임을 보여주는 금융 차트
# plotly.graph_objects 를 go라는 별칭으로 불러옵니다.
# go.Candlestick 을 그립니다.
import pandas as pd
import plotly.graph_objects as go
from datetime import datetime
df = pd.read_csv('https://raw.githubusercontent.com/plotly/datasets/master/finance-charts-apple.csv')
df
✅ 애플의 캔들스틱
data = go.Candlestick(x=df['Date'], open=df['AAPL.Open'],
high=df['AAPL.High'],
low=df['AAPL.Low'],
close=df['AAPL.Close']
# plotly.graph_objs 의 타입을 가진 데이터 형태를
# go.Figure() 안에 넣어주기
go.Figure(data)
📝 OHLC(Open-High-Low-Close)
# go.Ohlc
# go.Candlestick 자리에 go.Ohlc만 대입해주면 됨
fig = go.Figure(data=[go.Ohlc(x=df['Date'],
open=df['AAPL.Open'],
high=df['AAPL.High'],
low=df['AAPL.Low'],
close=df['AAPL.Close'])])
fig.show()
Candlestick 과의 차이점은 자세헤 보면 막대가 시가종가로 나뉘어져있다.
✅ Rangeslider 제외하기
# Rangeslider를 제외하고 Candlestick을 그립니다.
fig = go.Figure(data=[go.Candlestick(x=df['Date'],
open=df['AAPL.Open'],
high=df['AAPL.High'],
low=df['AAPL.Low'],
close=df['AAPL.Close'])])
fig.update_xaxes(rangeslider_visible=False)
fig.show()
📝데이터 직접 수집한 주가 시각화하기
# FinanceDataReader 로드하기
import FinanceDataReader as fdr
✅fdr.StockListing : 종목 리스트 확인
# fdr.StockListing('S&P500')
# S&P 500에 들어가 있는 종목들의 리스트 확인 가능
✅fdr.DataReader : 특정 종목 불러오기
# 특정 주가 불러오기
# FinanceDataReader의 DataReader는 미국 주식의 경우 종목코드대신 티커(Ticker)를 사용합니다.
# 티커는 약자와 비슷합니다.(마이크로소프트:MSFT, 스타벅스:SBUX 등)
✅전일비에 대한 히스토그램
px.histogram(tsla_norm[['High', 'Low']])
✅ 전일비에 대한 히스토그램 + marginal = 'box'
# 대표값을 표현하는 그래프에 대한 단점을 보완해서 만들어진 그래프 가 boxplot
# box => 4분위수를 시각화 할 때 사용!
px.histogram(tsla_norm[['High', 'Low']], marginal='box')
📝 다양한 distribute 표현
✅ scatterplot
px.scatter(df_maang_norm, x='GOOGL', y='META', marginal_x ='box', marginal_y ='violin')
✅ scatterplot_matrix
- 모든컬럼들끼리 scatter(분산도)를 펼쳐서 보여줌
px.scatter_matrix(df_maang_norm)
pd.plotting.scatter_matrix(df_maang_norm, alpha=0.1);
✅ px.box
# px.box
px.box(df_maang_norm)
✅ px.violin
# px.violin
px.violin(df_maang_norm, height=300, box=True, points='all')
💡
boxplot : 사분위수, 중위값(상자 안의 밴드), 이상치(점으로 표현)
violinplot : 커널 확률 밀도
✅ px.strip
# px.strip
px.strip(df_maang_norm)
✅px.histogram
# px.histogram
px.histogram(df_maang_norm, nbins = 50,
facet_col='company', facet_col_wrap=2)
728x90
'Python > ▶ Python & Pandas' 카테고리의 다른 글
6주차 시각화(KOSIS의 산업별 통계) (0) | 2023.02.07 |
---|---|
6주차 Seaborn (0) | 2023.02.06 |
5주차 TIL ( Pandas : 시각화 ) (0) | 2023.01.31 |
4주차 WIL (1) | 2023.01.19 |
TIL ②일차 (0) | 2023.01.11 |