Как получить данные об акциях EOD из Yahoo Finance за последние 20 РАБОЧИХ дней, используя Pandas в Python 2.7

Прямо сейчас я извлекаю данные за последние 30 дней, сохраняю их в фрейме данных, а затем выбираю данные за последние 20 дней для использования. Однако, если один из дней за последние 20 дней является выходным, Yahoo показывает объем за этот день как 0 и заполняет OHLC (открытие, максимум, минимум, закрытие, скорректированное закрытие) значением скорректированного закрытия предыдущего дня. В приведенном ниже примере данные за 2016-01-26 недействительны, и я не хочу получать эти данные. Итак, как мне получить данные из Yahoo точно за последние 20 рабочих дней? Мой текущий код ниже:

from datetime import date, datetime, timedelta
import pandas_datareader.data as web
todays_date = date.today()
n = 30
date_n_days_ago = date.today() - timedelta(days=n)
yahoo_data = web.DataReader('ACC.NS', 'yahoo', date_n_days_ago, todays_date)
yahoo_data_20_day = yahoo_data.tail(20)

person Pavan    schedule 18.02.2016    source источник


Ответы (1)


IIUC вы можете добавить фильтр, где столбец Volume не 0:

from datetime import date, datetime, timedelta
import pandas_datareader.data as web

todays_date = date.today()
n = 30
date_n_days_ago = date.today() - timedelta(days=n)
yahoo_data = web.DataReader('ACC.NS', 'yahoo', date_n_days_ago, todays_date)

#add filter - get data, where column Volume is not 0
yahoo_data = yahoo_data[yahoo_data.Volume != 0]

yahoo_data_20_day = yahoo_data.tail(20)
print yahoo_data_20_day
               Open     High      Low    Close  Volume  Adj Close
Date                                                             
2016-01-20  1218.90  1229.00  1205.00  1212.25  156300    1206.32
2016-01-21  1225.00  1236.95  1211.25  1228.45  209200    1222.44
2016-01-22  1239.95  1256.65  1230.05  1241.00  123200    1234.93
2016-01-25  1250.00  1263.50  1241.05  1245.00  124500    1238.91
2016-01-27  1249.00  1250.00  1228.00  1230.35  112800    1224.33
2016-01-28  1232.40  1234.90  1208.00  1214.95  134500    1209.00
2016-01-29  1220.10  1253.50  1216.05  1240.05  254400    1233.98
2016-02-01  1245.00  1278.90  1240.30  1271.85  210900    1265.63
2016-02-02  1266.80  1283.00  1253.05  1261.35  204600    1255.18
2016-02-03  1244.00  1279.00  1241.45  1248.95  191000    1242.84
2016-02-04  1255.25  1277.40  1253.20  1270.40  205900    1264.18
2016-02-05  1267.05  1286.00  1259.05  1271.40  231300    1265.18
2016-02-08  1271.00  1309.75  1270.15  1280.60  218500    1274.33
2016-02-09  1271.00  1292.85  1270.00  1279.10  148600    1272.84
2016-02-10  1270.00  1278.25  1250.05  1265.85  256800    1259.66
2016-02-11  1250.00  1264.70  1225.50  1234.00  231500    1227.96
2016-02-12  1234.20  1242.65  1199.10  1221.05  212000    1215.07
2016-02-15  1230.00  1268.70  1228.35  1256.55  130800    1250.40
2016-02-16  1265.00  1273.10  1225.00  1227.80  144700    1221.79
2016-02-17  1222.80  1233.50  1204.00  1226.05  165000    1220.05
person jezrael    schedule 18.02.2016
comment
Я получаю данные за последние 15 дней от Yahoo. Какие-нибудь изменения в системе Yahoo? Сегодня 26 мая 2021 года, я получаю данные от Yahoo до 11 мая 2021 года. - person Debashis Panda; 26.05.2021