Как извлечь выходные и праздничные дни для данных о ценах на акции - PullRequest
0 голосов
/ 13 июня 2018
markowitz = pd.read_excel('C:/Users/jordan/Desktop/book2.xlsx')
markowitz = markowitz.set_index('Dates')
markowitz

есть некоторые значения NaN в данных, некоторые из них являются выходными, а некоторые выходными, я должен определить выходные и установить его как предыдущее значение

Есть ли простой способ, которым я могу это сделать, я использовал

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

, но есть еще много дат, которые мне нужно скопировать и вставить (могу ли я просто отобразить вторую строку «дата»), а затемустановить их в качестве значения предыдущего торгового дня, есть ли более простой способ сделать это?Большое спасибо заранее.

Ответы [ 2 ]

0 голосов
/ 24 июля 2018

Я думаю, что вам лучше всего получить ключ API от quandl.com.Это бесплатно и дает вам доступ ко всем видам исторических данных временных рядов.Раньше был доступ к Yahoo Finance и Google Finance, но я думаю, что оба обесценились намного больше чем 1 год назад.

Вот небольшой пример кода, который определенно может вам помочь.

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)

Чтобы получить информацию о том, как получить необходимые данные, перейдите по ссылке ниже.

https://blog.quandl.com/api-for-stock-data

Также, пожалуйста, ознакомьтесь с этим для получения более подробной информации об использовании Python для количественного финансирования.

https://financetrain.com/best-python-librariespackages-finance-financial-data-scientists/

Наконец, и я прошу прощения, если это немного не по теме, но я думаю, что это может быть полезно на каком-то уровне ... рассмотрим что-то вроде этого ...

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)

Это не данные временного ряда, а скорее фундаментальные данные.Я не провел много времени на этом сайте, но, может быть, вы можете покопаться и найти там что-то, что соответствует вашим потребностям.Просто мысль.

0 голосов
/ 13 июня 2018

Может быть проще, если я знаю, что вы пытаетесь сделать.Метод fillna на фреймах данных позволяет вам выполнять заливку вперед.Поэтому, если вы не хотите заполнять выходные дни, но хотите заполнить все остальные nas (т.е. праздничные дни), вы можете просто исключить субботы и воскресенья следующим образом:

df.loc[~df['Date'].dt.weekday_name.isin(['Saturday','Sunday'])] = df.loc[~df['Date'].dt.weekday_name.isin(['Saturday','Sunday'])].fillna(method='ffill')

Вы можете использовать это для всего кадра данныхили на определенных столбцах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...