我试图使用fix_yahoo_finance为每个股票代码提供每月开盘价,收盘价,高价,低价,但下面的代码并未按月收取数据。
任何想法如何获得这些数据。
下面是代码。
from datetime import date as d
from monthdelta import monthdelta
import datetime
from datetime import timedelta
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import pandas_datareader.data as web
import fix_yahoo_finance as fyf
to_period=d.today()
from_period=d.today() - datetime.timedelta(days=5*365)
#######downloading data
TickerName = 'V'
stock_data=fyf.download(TickerName,start=from_period,end=to_period,interval='monthly')
stock_data = stock_data.iloc[:,0:4].round(2)
print(stock_data.tail(10))
请继续获取每日酒吧,然后您可以从每天到每月resample
DataFrame。以下是我的完整代码:
import pandas as pd
from pandas_datareader import data as pdr
import fix_yahoo_finance as yf
import datetime
yf.pdr_override()
#these are the stocks we can choose in our portfolio
stocks = [
'AAPL'
]
startD = '2017-01-01'
endD = '2019-01-29'
start_date = pd.to_datetime(startD)
end_date = pd.to_datetime(endD)
data = pdr.get_data_yahoo(stocks, start=start_date, end=end_date)#['Adj Close']
# using resample to group daily bar into monthly bar
n = 1
mon_data=pd.DataFrame(data['Adj Close'].resample('BM').apply(lambda x: x[-1-n]))
end_of_months = mon_data.index.tolist()
end_of_months[-1] = data.index[-1]
mon_data.index = end_of_months
mon_data.index = mon_data.index - datetime.timedelta(days=n)
#downloading the data from Yahoo! Finance
def download_data(stocks):
data = pdr.get_data_yahoo(stocks, start=start_date, end=end_date)['Adj Close']
return data
if __name__ == "__main__":
data = download_data(stocks)
print(mon_data)