import pandas as pd
import matplotlib.pyplot
import datetime
import yfinance as yf
import matplotlib.pyplot as plt
class Point:
def __init__(self,year,month,day,data) -> None:
self.year:int = year
self.month:int = month
self.day:int = day
self.data:float = data
def __repr__(self) -> str:
return f"{self.year}-{self.month}-{self.day}-{self.data}"
def main():
################################################################
#設定項目
ticker = "1820.T"
dataframes = []
start_year = 2015
end_year = 2022
start_month, start_date = 8, 31
end_month, end_date = 10, 7
anker_month, anker_date = "09", "28"
##################################################################
for year in range(start_year,end_year+1):
st = datetime.date(year,start_month, start_date)
ed = datetime.date(year,end_month, end_date)
df = yf.download(ticker,start=st,end=ed,progress=False)
df["Year"] = year
dataframes.append(df)
df_concat = pd.concat(dataframes)
df_concat.to_excel("result.xlsx")
df_concat.to_csv("result.csv")
with open("result.csv",mode="r") as fp:
lines = [i.split(",") for i in fp.readlines()]
data = {i[0]:i[5] for i in lines[1:]}
print(data)
points = [Point(i.split("-")[0],i.split("-")[1],i.split("-")[2],data[i]) for i in data.keys()]
start_year, end_year = points[0].year, points[-1].year
print(start_year, end_year)
data_by_year = []
for year in range(int(start_year), int(end_year)+1):
data_by_year.append([i for i in points if i.year == str(year)])
print(data_by_year)
fig = plt.figure()
for i in [j for j in data_by_year]:
plt.plot([k for k in range(len(i))],[float(i.data) for i in i],label = i[0].year)
for n,data in enumerate([i for i in i]):
if data.day == anker_date and data.month == anker_month:
plt.scatter(n,float(data.data),s = 30,color = "red")
plt.legend()
plt.grid()
fig.savefig("result.png",dpi = 500)
main()実行結果


