Home > Enterprise >  ThreadPoolExecutor - How can you bring results to Excel?
ThreadPoolExecutor - How can you bring results to Excel?

Time:11-27

I'm using the Yahoo finance API to extract data using ThreadPoolExecutor. Can anyone show me how to bring the output to excel if possible? Thanks

Code

import yfinance as yf
from concurrent.futures import ThreadPoolExecutor

def get_stats(ticker):
    info = yf.Tickers(ticker).tickers[ticker].info
    print(f"{ticker} {info['currentPrice']} {info['marketCap']}")

ticker_list = ['AAPL', 'ORCL', 'PREM.L', 'UKOG.L', 'KOD.L', 'TOM.L', 'VELA.L', 'MSFT', 'AMZN', 'GOOG']

with ThreadPoolExecutor() as executor:
    executor.map(get_stats, ticker_list)

Output

VELA.L 0.035 6004320
UKOG.L 0.1139 18496450
PREM.L 0.461 89516976
ORCL 76.755 204970377216
MSFT 294.8669 2210578825216
TOM.L 0.604 10558403
KOD.L 0.3 47496900
AMZN 3152.02 1603886514176
AAPL 171.425 2797553057792
GOOG 2698.05 1784584732672

CodePudding user response:

First, you can make a empty list and feed id with every returned result by the API, then construct a dataframe from it and finally use pandas.to_excel to make the Excel spreadsheet.

Try this :

import yfinance as yf
from concurrent.futures import ThreadPoolExecutor
import pandas as pd


list_of_futures= []

def get_stats(ticker):
    info = yf.Tickers(ticker).tickers[ticker].info
    s= f"{ticker} {info['currentPrice']} {info['marketCap']}"
    list_of_futures.append(s)

ticker_list = ['AAPL', 'ORCL', 'PREM.L', 'UKOG.L', 'KOD.L', 'TOM.L', 'VELA.L', 'MSFT', 'AMZN', 'GOOG']

with ThreadPoolExecutor() as executor:
    executor.map(get_stats, ticker_list)
    
(
    pd.DataFrame(list_of_futures)
        [0].str.split(expand=True)
        .rename(columns={0: "Ticker", 1: "Price", 2: "Market Cap"})
        .to_excel("yahoo_futures.xlsx", index=False)
)

# Output (dataframe)

   Ticker   Price     Market Cap
0  UKOG.L   0.064       14417024
1  VELA.L  0.0205        3331721
2    AMZN   93.41   952940888064
3    GOOG    97.6  1261313982464
4    ORCL   82.72   223027183616
5   KOD.L    0.28       47330360
6    AAPL  148.11  2356148699136
7    MSFT  247.49  1844906819584
8   TOM.L   0.455        9117245
9  PREM.L    0.57      127782592
  • Related