Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 如何在Python中获取用于数据分析的历史财务数据?_Python 3.x_Finance_Yahoo Finance_Google Finance Api - Fatal编程技术网

Python 3.x 如何在Python中获取用于数据分析的历史财务数据?

Python 3.x 如何在Python中获取用于数据分析的历史财务数据?,python-3.x,finance,yahoo-finance,google-finance-api,Python 3.x,Finance,Yahoo Finance,Google Finance Api,我需要使用pandas DataReader获取以下银行的股票数据: Bank of America CitiGroup Goldman Sachs JPMorgan Chase Morgan Stanley Wells Fargo 如何获取这些银行2006年1月1日至2016年1月1日的股票数据 我试过 import numpy as np import pandas as pd from pandas_datareader import da

我需要使用pandas DataReader获取以下银行的股票数据:

    Bank of America
    CitiGroup
    Goldman Sachs
    JPMorgan Chase
    Morgan Stanley
    Wells Fargo
如何获取这些银行2006年1月1日至2016年1月1日的股票数据

我试过

import numpy as np
import pandas as pd
from pandas_datareader import data, wb
import matplotlib
import matplotlib.pyplot as plt
import seaborn as sns
import requests
import io
%matplotlib inline

import datetime
start = datetime.datetime(2006,1,1)
end = datetime.datetime(2016,1,1)

# Bank of America
BAC = data.DataReader("BAC",'ff', start, end)

您的问题在于用于使用Datareader检索数据的源。似乎
'ff'
与任何接受的API都不对应

我已经试过了,效果很好:

import pandas_datareader.data as web
from datetime import datetime

start = datetime(2016, 9, 1)
end   = datetime(2018, 9, 1)

f = web.DataReader('BAC', 'iex', start, end)
print(f)

另外,看一下,有很多例子。

以下是我认为非常可靠的方法,与其他方法不同,我只使用它来分析,这从未让我失望过。(此外,可用数据的日期范围非常广泛,如下例所示)


您可以尝试的另一个解决方案是一个Python包,用于从Investment.com从世界各地的各种金融产品中提取历史数据。它没有任何限制,不需要API键,而且是完全免费的,因为它是一个开源项目

在这里,我向您展示一段代码,以便从您要求的上述股票的过去9年中检索股票历史数据:

import investpy

stock_symbols = ['BAC', 'C', 'GS', 'JPM', 'MS', 'WFC']

for stock_symbol in stock_symbols:
    df = investpy.get_stock_historical_data(stock=symbol,
                                            country='united states',
                                            from_date='01/01/2010',
                                            to_date='01/01/2019')
    print(df.head())
希望这对你有帮助!我还鼓励您使用investpy


请注意,investpy股票数据检索函数将股票符号和指定股票所在国家作为输入参数。因此,由于您的输入是股票名称,因此您需要搜索investpy数据以检索您引入的股票名称的符号,具体操作如下:

上面的代码将打印找到的全部或部分与引入名称匹配的所有股票。

2021答案 在我看来,没有必要为了获得一个免费的API令牌或安装另一个软件包而转载到
IEX
Yahoo
API工作正常:

# Bank of America
BAC = data.DataReader("BAC", 'yahoo', start, end)

# CitiGroup
C = data.DataReader("C", 'yahoo', start, end)

# Goldman Sachs
GS = data.DataReader("GS", 'yahoo', start, end)

# JPMorgan Chase
JPM = data.DataReader("JPM", 'yahoo', start, end)

# Morgan Stanley
MS = data.DataReader("MS", 'yahoo', start, end)

# Wells Fargo
WFC = data.DataReader("WFC", 'yahoo', start, end)

这个头衔的荣誉。
import investpy

stocks = ['Bank of America', 'CitiGroup', 'Goldman Sachs', 'JPMorgan', 'Morgan Stanley', 'Wells Fargo&Co']

for stock in stocks:
    print(investpy.search_stocks(by='name', value=stock))
# Bank of America
BAC = data.DataReader("BAC", 'yahoo', start, end)

# CitiGroup
C = data.DataReader("C", 'yahoo', start, end)

# Goldman Sachs
GS = data.DataReader("GS", 'yahoo', start, end)

# JPMorgan Chase
JPM = data.DataReader("JPM", 'yahoo', start, end)

# Morgan Stanley
MS = data.DataReader("MS", 'yahoo', start, end)

# Wells Fargo
WFC = data.DataReader("WFC", 'yahoo', start, end)