2022/01/14/FRI
from pandas_datareader import data as pdr
import numpy as np
import pandas as pd
import warnings
from IPython.display import HTML
def show(fig):
return HTML(fig.to_html(include_plotlyjs='cdn',include_mathjax=False, config=dict({'scrollZoom':False})))
symbols = ['AMZN','AAPL','GOOG','MSFT','NFLX','NVDA','TSLA']
start = '2020-01-01'
end = '2020-11-28'
df = pdr.get_data_yahoo(symbols,start,end)['Adj Close']
df.index
df.columns
df # 지금 인덱스 역할을 Date가 하고 있음
- Symbols는 그냥 회사 이름들 범주알려주는 지표?느낌 인듯
df.reset_index()
# Date가 column으로 들어갔음
df.reset_index().plot.line(x='Date',y='AMZN')
df.reset_index().plot.line(x='Date',y=['AMZN','GOOG'])
df.reset_index().plot.line(x='Date')
df.reset_index().plot.line(x='Date',figsize=(10,10))
서브플랏
df.reset_index().plot.line(x='Date',figsize=(10,10),subplots=True)
df.reset_index().plot.line(x='Date',figsize=(10,10),subplots=True,layout=(4,2))
- 폰트조정
df.reset_index().plot.line(x='Date',figsize=(10,10),subplots=True,layout=(4,2),fontsize=20)
- 투명도 조정
df.reset_index().plot.line(x='Date',figsize=(10,10),subplots=True,layout=(4,2),alpha=0.3)
- 레전드 삭제
df.reset_index().plot.line(x='Date',figsize=(10,10),subplots=True,layout=(4,2),legend=False)
df = pd.read_csv('https://raw.githubusercontent.com/kalilurrahman/datasets/main/mobilephonemktshare2020.csv')
df
df.plot.bar(x='Date',y=['Samsung','Apple'],figsize=(10,5))
df.plot.bar(x='Date',y=['Samsung','Apple'],figsize=(10,5),width=0.8)
df.plot.barh(x='Date',y=['Samsung','Apple'],figsize=(5,10))
df.plot.bar(x='Date',figsize=(15,10),subplots=True,layout=(4,4),legend=False)
df.melt(id_vars='Date')$\to$wideform이였던 dateframe를 longform으로 바꾸면서 타이디한 데이터
이제 plotly를 벡엔드로 활용해보자
df
df.melt(id_vars='Date')
df.melt(id_vars='Date').groupby('variable').agg(np.mean)
df.melt(id_vars='Date').groupby('variable').agg(np.mean).\
plot.bar(legend=False)
df.melt(id_vars='Date').groupby('variable').agg(np.mean).sort_values('value',ascending=False).\
plot.bar(legend=False)
df.plot.bar(backend='plotly')
error 발생 $\to$ wideform은 plotly를 벡엔드로 활용 X
- plotly는 이 블로그에서 지원하지 않으므로 주석처리 하겠음
# plot.bar(backend='plotly')
위의 그림은 제조사의 평균 점유율을 날짜 별로 그린 것이고 아래 그림은 날짜별로 각 제조사의 점유율을 그린 것이기 때문에 각 날짜별로 제조사를 구분하기 위해서 색깔로 제조사를 구분해줄 필요가 있다
# plot.bar(x='Date',y='value',color='variable',backend='plotly',width=500,height=600)
# plot.bar(x='Date',y='value',color='variable',backend='plotly',barmode='group')
# plot.bar(x='Date',y='value',color='variable',backend='plotly',barmode='group',text='value')
# plot.bar(x='Date',y='value',color='variable',backend='plotly',facet_col='variable')
# plot.bar(y='Date',x='value',color='variable',backend='plotly',facet_row='variable',height=700)