Python 주가 그래프 제작
이전 섹션:
제조 공장의 영업을 하면서 평소의'매일 주요 1000 제품의 주문 동향을 파악하고 싶다'는 생각으로 쫓기는 일이 많다.여러 가지 시도를 통해 접선도에서의 가시화를 가장 효과적으로 모니터링할 수 있을 것 같아서Python에서 도표 제작을 진행하였다.
*본 투고에서는 주문 데이터 대신 주가를 사용한다.
(회사 내부의 안전한 관계로 Python을 가져올 수 없기 때문에 실제 업무에서 해결할 수 없음)
구성:
주가로 Python 그래프 만들기
다음 순서
파이썬으로 주가 자동 취득
데이터 성형
/데이터 요약 및 그리기#必要ライブラリーのImport
from datetime import datetime
import pandas as pd
import matplotlib.pyplot as plt
import sys
from yahoo_finance_api2 import share
from yahoo_finance_api2.exceptions import YahooFinanceError
import numpy as np
import matplotlib.dates as mdate
#銘柄ファイルを先にエクセルで作成しておきPandasで読み込み(銘柄コード一覧はネットで拾ってくる)
df=pd.read_excel("/Users/銘柄.xlsx")
l=df["コード"]
#yahoo_finance_apiで株価を自動取得する為、銘柄コードの末尾に「.T」を付与する処理
j=list(l)
q=list(map(lambda x: str(x),j))
c = list(map(lambda x: x+".T", q))
#先ずは例として1銘柄2年分自動取得を行う。(今回はOpenのみ使用)
my_share = share.Share('1305.T')
symbol_data = None
try:
symbol_data= my_share.get_historical(
share.PERIOD_TYPE_YEAR, 2,
share.FREQUENCY_TYPE_DAY,1)
except YahooFinanceError as e:
print(e.message)
sys.exit(1)
df = pd.DataFrame(symbol_data)
df["datetime"] = pd.to_datetime(df.timestamp, unit="ms")
g=df[["datetime","open"]]
g.rename(columns={'open': '1305.T'}, inplace=True)
#残りはfor loopで回し、上で作成した株価一覧に結合していく
for z in c:
my_share = share.Share(z)
symbol_data = None
try:
symbol_data = my_share.get_historical(
share.PERIOD_TYPE_YEAR, 2,
share.FREQUENCY_TYPE_DAY,1)
except YahooFinanceError as e:
print(e.message)
sys.exit(1)
df = pd.DataFrame(symbol_data)
df["datetime"] = pd.to_datetime(df.timestamp, unit="ms")
d=df[["datetime","open"]]
d.rename(columns={'open': z}, inplace=True)
g=pd.merge(g, d, on='datetime',how='left')
#datetimeをインデックス化。また1305.Tの重複を削除
g.set_index('datetime', inplace=True)
print(g.columns[[0,1,2]])
g.rename(columns={'1305.T_y': '1305.T'}, inplace=True)
g.drop(g.columns[[0]], axis=1,inplace=True)
#複合グラフの処理、見やすさを加味し12x12とした
%matplotlib tk
fig, axes = plt.subplots(12,12,sharex=True,sharey=False, figsize = (19,10))
for ax, zz in zip(axes.ravel(),c):
dt = g[zz]
ax.plot(dt,label=zz)
ax.grid(True)
ax.legend(fontsize=6)
ax.set_xticklabels(g.index,rotation=90,fontsize=8)
xfmt = mdates.DateFormatter("%y/%m/%d")
ax.xaxis.set_major_formatter(xfmt)
ax.tick_params(labelsize=8)
plt.tight_layout()
plt.show()
결과:
아래의 데이터를 주문 동향으로 바꾸면 증설 판단에 도움이 된다👏
Reference
이 문제에 관하여(Python 주가 그래프 제작), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Yuuu222/items/e23a731f5d324ef88451
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
주가로 Python 그래프 만들기
다음 순서
파이썬으로 주가 자동 취득
데이터 성형
/데이터 요약 및 그리기
#必要ライブラリーのImport
from datetime import datetime
import pandas as pd
import matplotlib.pyplot as plt
import sys
from yahoo_finance_api2 import share
from yahoo_finance_api2.exceptions import YahooFinanceError
import numpy as np
import matplotlib.dates as mdate
#銘柄ファイルを先にエクセルで作成しておきPandasで読み込み(銘柄コード一覧はネットで拾ってくる)
df=pd.read_excel("/Users/銘柄.xlsx")
l=df["コード"]
#yahoo_finance_apiで株価を自動取得する為、銘柄コードの末尾に「.T」を付与する処理
j=list(l)
q=list(map(lambda x: str(x),j))
c = list(map(lambda x: x+".T", q))
#先ずは例として1銘柄2年分自動取得を行う。(今回はOpenのみ使用)
my_share = share.Share('1305.T')
symbol_data = None
try:
symbol_data= my_share.get_historical(
share.PERIOD_TYPE_YEAR, 2,
share.FREQUENCY_TYPE_DAY,1)
except YahooFinanceError as e:
print(e.message)
sys.exit(1)
df = pd.DataFrame(symbol_data)
df["datetime"] = pd.to_datetime(df.timestamp, unit="ms")
g=df[["datetime","open"]]
g.rename(columns={'open': '1305.T'}, inplace=True)
#残りはfor loopで回し、上で作成した株価一覧に結合していく
for z in c:
my_share = share.Share(z)
symbol_data = None
try:
symbol_data = my_share.get_historical(
share.PERIOD_TYPE_YEAR, 2,
share.FREQUENCY_TYPE_DAY,1)
except YahooFinanceError as e:
print(e.message)
sys.exit(1)
df = pd.DataFrame(symbol_data)
df["datetime"] = pd.to_datetime(df.timestamp, unit="ms")
d=df[["datetime","open"]]
d.rename(columns={'open': z}, inplace=True)
g=pd.merge(g, d, on='datetime',how='left')
#datetimeをインデックス化。また1305.Tの重複を削除
g.set_index('datetime', inplace=True)
print(g.columns[[0,1,2]])
g.rename(columns={'1305.T_y': '1305.T'}, inplace=True)
g.drop(g.columns[[0]], axis=1,inplace=True)
#複合グラフの処理、見やすさを加味し12x12とした
%matplotlib tk
fig, axes = plt.subplots(12,12,sharex=True,sharey=False, figsize = (19,10))
for ax, zz in zip(axes.ravel(),c):
dt = g[zz]
ax.plot(dt,label=zz)
ax.grid(True)
ax.legend(fontsize=6)
ax.set_xticklabels(g.index,rotation=90,fontsize=8)
xfmt = mdates.DateFormatter("%y/%m/%d")
ax.xaxis.set_major_formatter(xfmt)
ax.tick_params(labelsize=8)
plt.tight_layout()
plt.show()
결과:
아래의 데이터를 주문 동향으로 바꾸면 증설 판단에 도움이 된다👏
Reference
이 문제에 관하여(Python 주가 그래프 제작), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Yuuu222/items/e23a731f5d324ef88451
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Python 주가 그래프 제작), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Yuuu222/items/e23a731f5d324ef88451텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)