问题描述
我想知道python代码以获得这样的东西:
我们在行上有日期,在列上有各种股票代码(例如所有 sp500 公司)和价值是他们的总资产。
只有一家公司的代码是这样的: enter image description here
但我不能为数百家公司做这件事。你能帮助我吗?我提前谢谢你!
解决方法
我创建了一个代码来获取雅虎财经上几只股票的损益表。许多股票可以包含在列表中或作为 CSV 文件导入。然后循环遍历代码以检索和组合它们。之后,转置和修改列名。对于下一个问题,请将代码作为文本而不是图像发布。这样做的好处是您会得到更快的答复。
import yfinance as yf
import numpy as np
import pandas as pd
symbol = ["AAPL","TSLA","AMZN","NKE","GOOG","KO"]
tickers = yf.Tickers(" ".join(symbol))
all_assets = pd.DataFrame(columns=['symbol','Total Assets'])
for i,ticker in enumerate(tickers.tickers):
try:
assets= tickers.tickers[i].balance_sheet.T["Total Assets"].to_frame()
assets['symbol'] = symbol[i]
all_assets = pd.concat([all_assets,assets],axis=0)
except:
pass
all_assets.head(10)
symbol Total Assets
2020-09-26 AAPL 3.238880e+11
2019-09-28 AAPL 3.385160e+11
2018-09-29 AAPL 3.657250e+11
2017-09-30 AAPL 3.753190e+11
2020-12-31 TSLA 5.214800e+10
2019-12-31 TSLA 3.430900e+10
2018-12-31 TSLA 2.974000e+10
2017-12-31 TSLA 2.865537e+10
2020-12-31 AMZN 3.211950e+11
2019-12-31 AMZN 2.252480e+11
all_assets.pivot(columns='symbol').head(5)
Total Assets
symbol AAPL AMZN GOOG KO NKE TSLA
2017-05-31 NaN NaN NaN NaN 2.325900e+10 NaN
2017-09-30 3.753190e+11 NaN NaN NaN NaN NaN
2017-12-31 NaN 1.313100e+11 1.972950e+11 8.789600e+10 NaN 2.865537e+10
2018-05-31 NaN NaN NaN NaN 2.253600e+10 NaN
2018-09-29 3.657250e+11 NaN NaN NaN NaN NaN