import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import pandas_datareader as data
start ='2010-01-01'
end = '2019-12-31'
df=data.DataReader('AppL', 'yahoo', start, end)
df.head()
——错误
TypeError Traceback (most recent call last)
/tmp/ipykernel_1028/3510576555.py in <module>
2 end = '2019-12-31'
3
----> 4 df=data.DataReader('AppL', 'yahoo', start, end)
5 df.head()
~/conda/envs/python/lib/python3.7/site-packages/pandas/util/_decorators.py in wrapper(*args, **kwargs)
205 else:
206 kwargs[new_arg_name] = new_arg_value
--> 207 return func(*args, **kwargs)
208
209 return cast(F, wrapper)
~/conda/envs/python/lib/python3.7/site-packages/pandas_datareader/data.py in DataReader(name, data_source, start, end, retry_count, pause, session, api_key)
376 retry_count=retry_count,
377 pause=pause,
--> 378 session=session,
379 ).read()
380
~/conda/envs/python/lib/python3.7/site-packages/pandas_datareader/base.py in read(self)
251 # If a single symbol, (e.g., 'GOOG')
252 if isinstance(self.symbols, (string_types, int)):
--> 253 df = self._read_one_data(self.url, params=self._get_params(self.symbols))
254 # Or multiple symbols, (e.g., ['GOOG', 'AAPL', 'MSFT'])
255 elif isinstance(self.symbols, DataFrame):
~/conda/envs/python/lib/python3.7/site-packages/pandas_datareader/yahoo/daily.py in _read_one_data(self, url, params)
151 try:
152 j = json.loads(re.search(ptrn, resp.text, re.DOTALL).group(1))
--> 153 data = j["context"]["dispatcher"]["stores"]["HistoricalPriceStore"]
154 except KeyError:
155 msg = "No data fetched for symbol {} using {}"
TypeError: string indices must be integers
帮我解决这个代码中的错误。
根据文档,您可以从雅虎财经下载数据在start_date
和end_date
之间使用以下代码:
这将产生一个pandas dataframe.
代码:
import yfinance as yf
start_date ='2010-01-01'
end_date = '2019-12-31'
data = yf.download("AAPL", start=start_date, end=end_date)
print(data)
输出:Open High Low Close Adj Close Volume
Date
2010-01-04 7.622500 7.660714 7.585000 7.643214 6.515214 493729600
2010-01-05 7.664286 7.699643 7.616071 7.656429 6.526476 601904800
2010-01-06 7.656429 7.686786 7.526786 7.534643 6.422664 552160000
2010-01-07 7.562500 7.571429 7.466071 7.520714 6.410791 477131200
2010-01-08 7.510714 7.571429 7.466429 7.570714 6.453412 447610800
... ... ... ... ... ... ...
2019-12-23 70.132500 71.062500 70.092499 71.000000 69.557091 98572000
2019-12-24 71.172501 71.222504 70.730003 71.067497 69.623215 48478800
2019-12-26 71.205002 72.495003 71.175003 72.477501 71.004578 93121200
2019-12-27 72.779999 73.492500 72.029999 72.449997 70.977631 146266000
2019-12-30 72.364998 73.172501 71.305000 72.879997 71.398895 144114400
[2515 rows x 6 columns]
注意:
如果你想要多个代码:
import yfinance as yf
start_date ='2010-01-01'
end_date = '2019-12-31'
data = yf.download("MSFT AAPL", start=start_date, end=end_date)
print(data)