Я довольно новичок в python и кодировании в целом. У меня есть большой файл данных, который предоставляет ежедневные данные за период 2011–2018 гг. Для ряда биржевых тикеров (300 ~).
Данные представляют собой файл .csv с приблизительно 150 тыс. Строк и выглядят следующим образом (короткий пример):
Date,Symbol,ShortExemptVolume,ShortVolume,TotalVolume
20110103,AAWW,0.0,28369,78113.0
20110103,AMD,0.0,3183556,8095093.0
20110103,AMRS,0.0,14196,18811.0
20110103,ARAY,0.0,31685,77976.0
20110103,ARCC,0.0,177208,423768.0
20110103,ASCMA,0.0,3930,26527.0
20110103,ATI,0.0,193772,301287.0
20110103,ATSG,0.0,23659,72965.0
20110103,AVID,0.0,7211,18896.0
20110103,BMRN,0.0,21740,213974.0
20110103,CAMP,0.0,2000,11401.0
20110103,CIEN,0.0,625165,1309490.0
20110103,COWN,0.0,3195,24293.0
20110103,CSV,0.0,6133,25394.0
У меня есть функция, которая позволяет мне фильтровать определенный символ c и получать 10 наблюдений до и после указанной даты (может быть любой датой между 2011 и 2018 гг.).
import pandas as pd
from datetime import datetime
import urllib
import datetime
def get_data(issue_date, stock_ticker):
df = pd.read_csv (r'D:\Project\Data\Short_Interest\exampledata.csv')
df['Date'] = pd.to_datetime(df['Date'], format="%Y%m%d")
d = df
df = pd.DataFrame(d)
short = df.loc[df.Symbol.eq(stock_ticker)]
# get the index of the row of interest
ix = short[short.Date.eq(issue_date)].index[0]
# get the item row for that row's index
iloc_ix = short.index.get_loc(ix)
# get the +/-1 iloc rows (+2 because that is how slices work), basically +1 and -1 trading days
short_data = short.iloc[iloc_ix-10: iloc_ix+11]
return [short_data]
Я хочу создать сценарий, который повторяет список «Issue_Dates» и «Stock_tickers». Список (.csv) выглядит следующим образом:
ARAY,07/08/2017
ARAY,24/04/2014
ACETQ,16/11/2015
ACETQ,16/11/2015
NVLNA,15/08/2014
ATSG,29/09/2017
ATI,24/05/2016
MDRX,18/06/2013
MDRX,18/06/2013
AMAGX,10/05/2017
AMAGX,14/02/2014
AMD,14/09/2016
Чтобы разбить мою проблему и вопрос, я хотел бы знать, как сделать следующее:
Во-первых, как мне загрузить входы?
Во-вторых, как мне вызвать функцию на каждом входе?
И, наконец, как мне накапливать все возвраты функции в одном кадре данных?