我尝试通过FundamentalAnalysis库从Yahoo财务中下载关键财务比率。单身我很容易,我有一个带有代码和名字的df:
Ticker Company
0 A Agilent Technologies Inc.
1 AA ALCOA CORPORATION
2 AAC AAC Holdings Inc
3 AAL AMERICAN AIRLINES GROUP INC
4 AAME Atlantic American Corp.
然后我尝试使用一个for循环通过fa.ratios()下载每个股票的比率。
for i in range (3):
i = 0
i = i + 1
Ratios = fa.ratios(tickers["Ticker"][i])
因此,基本上,它将下载一个报价器的所有比率,然后下载第二个报价器的所有比率,依此类推。我还尝试将df更改为列表,但效果不佳。如果我手动将它们放在列表中,例如:
Symbol = ["TSLA" , "AAPL" , "MSFT"]
以某种方式起作用。但是,由于我要使用1000多个股票行情指示器中的数据,所以我不想手动将它们全部键入列表中。也许其他地方已经回答了这个问题,在这种情况下,很抱歉,但是我找不到能够帮助我的话题。有什么想法吗?
您可以使用]获得符号>
symbols = df['Ticker'].to_list()
然后您可以在没有
for
的情况下使用range()
循环>ratios = dict() for s in symbols: ratios[s] = fa.ratios(s) print(ratios)
因为某些符号可能无法给出比率,所以您应该使用
try/except
最小的工作示例。我仅使用
io.StringIO
模拟文件。
import FundamentalAnalysis as fa
import pandas as pd
import io
text='''Ticker Company
A Agilent Technologies Inc.
AA ALCOA CORPORATION
AAC AAC Holdings Inc
AAL AMERICAN AIRLINES GROUP INC
AAME Atlantic American Corp.'''
df = pd.read_csv(io.StringIO(text), sep='\s{2,}')
symbols = df['Ticker'].to_list()
#symbols = ["TSLA" , "AAPL" , "MSFT"]
print(symbols)
ratios = dict()
for s in symbols:
try:
ratios[s] = fa.ratios(s)
except Exception as ex:
print(s, ex)
for s, ratio in ratios.items():
print(s, ratio)