pandas DataReader работает неправильно

Я пытаюсь импортировать данные из Yahoo Finance, но панды, похоже, неправильно читают дату начала и день окончания. Также сообщает мне об ошибке панд, которую я не понимаю

это код, который я поставил:

import numpy as np
import pandas as pd
from pandas_datareader import data as wb
import matplotlib.pyplot as plt

и это то, что появляется на экране, но я все еще могу использовать панд

/opt/anaconda3/lib/python3.7/site-packages/pandas_datareader/compat/__init__.py:7: FutureWarning: pandas.util.testing is deprecated. Use the functions in the public API at pandas.testing instead.
  from pandas.util.testing import assert_frame_equal.

затем я запустил этот код

acciones=["PG","BEI.DE"]
datos= pd.DataFrame()
for t in acciones:
    datos[t]=wb.DataReader(t,data_source="yahoo",start=2016-1-1,end=2019-1-1)["Adj Close"]

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

datos.tail()

Date        PG             BEI.DE
2016-12-23  76.435783   78.406380
2016-12-27  76.111885   78.726517
2016-12-28  75.635086   78.600410
2016-12-29  75.886978   78.687721
2016-12-30  75.644073   78.192947


datos.head
Date        PG             BEI.DE
2014-01-02  65.854416   68.331200
2014-01-03  65.780823   68.686317
2014-01-06  65.936180   68.405960
2014-01-07  66.573967   68.592857
2014-01-08  65.609123   68.004128

person mr.whiskers    schedule 21.06.2020    source источник


Ответы (1)


Вы получаете предупреждение о том, что FutureWarning: pandas.util.testing is deprecated вы все еще можете запускать свой код, но в будущем он может сломаться. Эта проблема была решена здесь

Вместо использования оператора импорта: from pandas.util.testing import assert_frame_equal используйте вместо него этот

from pandas.testing import assert_frame_equal

Также вы должны использовать библиотеку datetime для создания дат начала и окончания, чтобы ваши даты были правильного типа.

import datetime
import pandas as pd
import pandas_datareader.data as wb

start_date = datetime.datetime(2016,1,1)
end_date = datetime.datetime(2019,1,1)
acciones=["PG","BEI.DE"]
datos= pd.DataFrame()
for t in acciones:
    datos[t]=wb.DataReader(t,data_source="yahoo",start=start_date,end=end_date)["Adj Close"]

Выход:

>>> datos.head()
                   PG     BEI.DE
Date                            
2016-01-04  68.264992  78.003090
2016-01-05  68.482758  78.849281
2016-01-06  67.820770  78.339645
2016-01-07  67.228455  76.426102
2016-01-08  66.174454  76.233788

>>> datos.tail()
                   PG     BEI.DE
Date                            
2018-12-24  83.908928        NaN
2018-12-26  86.531075        NaN
2018-12-27  88.384834  89.214600
2018-12-28  87.578018  89.805695
2018-12-31  88.288788        NaN
person Derek O    schedule 22.06.2020