Python 如何提取股票价格数据的周末和银行假期
有没有一个简单的方法可以做到这一点,我用过Python 如何提取股票价格数据的周末和银行假期,python,pandas,dataframe,Python,Pandas,Dataframe,有没有一个简单的方法可以做到这一点,我用过 markowitz = pd.read_excel('C:/Users/jordan/Desktop/book2.xlsx') markowitz = markowitz.set_index('Dates') markowitz 但是仍然有很多日期需要复制和粘贴(我可以只显示第二行“日期”),然后将它们设置为前一个交易日的值,有没有更简单的方法?事先非常感谢。如果我知道你想做什么,可能有一个更简单的方法。dataframes上的fillna方法允许进
markowitz = pd.read_excel('C:/Users/jordan/Desktop/book2.xlsx')
markowitz = markowitz.set_index('Dates')
markowitz
但是仍然有很多日期需要复制和粘贴(我可以只显示第二行“日期”),然后将它们设置为前一个交易日的值,有没有更简单的方法?事先非常感谢。如果我知道你想做什么,可能有一个更简单的方法。dataframes上的fillna方法允许进行前向填充。因此,如果您不想填满周末,但想填满所有其他nas(即假期),您可以只排除周六和周日,如下所示:
import pandas as pd
from pandas.tseries.holiday import USFederalHolidayCalendar as calendar
dr = pd.date_range(start='2013-01-01', end='2018-06-12')
df = pd.DataFrame()
df['Date'] = dr
cal = calendar()
holidays = cal.holidays(start=dr.min(), end=dr.max())
df['Holiday'] = df['Date'].isin(holidays)
print (df)
df = df[df['Holiday'] == True]
df
您可以在整个数据帧或特定列上使用它 我认为您最好的选择是从quandl.com获得API密钥。它是免费的,让你可以访问各种时间序列历史数据。雅虎金融和谷歌金融过去是可以使用的,但我认为它们在一年前都贬值了很多 下面是一个小的代码示例,它绝对可以帮助您
df.loc[~df['Date'].dt.weekday_name.isin(['Saturday','Sunday'])] = df.loc[~df['Date'].dt.weekday_name.isin(['Saturday','Sunday'])].fillna(method='ffill')
有关如何获取所需数据的信息,请查看下面的链接
另外,请参阅本文以了解有关使用Python进行定量金融的更多详细信息
最后,我道歉,如果这是一个稍微偏离主题,但我认为它可能是有帮助的,在某种程度上……考虑这样的事情…
import quandl
quandl.ApiConfig.api_key = 'your_api_key_goes_here'
# get the table for daily stock prices and,
# filter the table for selected tickers, columns within a time range
# set paginate to True because Quandl limits tables API to 10,000 rows per call
data = quandl.get_table('WIKI/PRICES', ticker = ['AAPL', 'MSFT', 'WMT'],
qopts = { 'columns': ['ticker', 'date', 'adj_close'] },
date = { 'gte': '2015-12-31', 'lte': '2016-12-31' },
paginate=True)
print(data)
这不是时间序列数据,而是基础数据。我在那个网站上没花太多时间,但也许你可以随便看看,找到适合你需要的东西。只是想一想。非常感谢。然而,我需要导入任何东西来支持这个“日期”吗?哦,不,我只是在使用上面的df['Date']列。Date与df['Date']相同,您可以使用点符号访问任何列(其名称没有空格)。我为Clarity编辑了我的答案,非常感谢。“df”数据框是我创建的用来标识假日的数据框。包含NaN值的框架是“markowitz”。有没有一种方法可以让我直接识别和设置“markowitz”中的值?对不起,有这么多问题。。。。。。。
import requests
from bs4 import BeautifulSoup
base_url = 'http://finviz.com/screener.ashx?v=152&s=ta_topgainers&o=price&c=0,1,2,3,4,5,6,7,25,63,64,65,66,67'
html = requests.get(base_url)
soup = BeautifulSoup(html.content, "html.parser")
main_div = soup.find('div', attrs = {'id':'screener-content'})
light_rows = main_div.find_all('tr', class_="table-light-row-cp")
dark_rows = main_div.find_all('tr', class_="table-dark-row-cp")
data = []
for rows_set in (light_rows, dark_rows):
for row in rows_set:
row_data = []
for cell in row.find_all('td'):
val = cell.a.get_text()
row_data.append(val)
data.append(row_data)
# sort rows to maintain original order
data.sort(key=lambda x: int(x[0]))
import pandas
pandas.DataFrame(data).to_csv("AAA.csv", header=False)