Yahoo Finance API rechtstreeks verbinden met Tableau Desktop

Door Emre Oktay op Jan 15, 2024 1:30:00 PM

<span id="hs_cos_wrapper_name" class="hs_cos_wrapper hs_cos_wrapper_meta_field hs_cos_wrapper_type_text" style="" data-hs-cos-general-type="meta_field" data-hs-cos-type="text" >Yahoo Finance API rechtstreeks verbinden met Tableau Desktop</span>

Inleiding

In het dynamische financiële landschap is het benutten van gegevens via API's onmisbaar geworden voor het nemen van weloverwogen beslissingen. Als je je ooit hebt afgevraagd of het mogelijk was om via Tableau Desktop rechtstreeks verbinding te maken met een API (Yahoo Finance API in dit geval) om live gegevens op te halen en visualisaties te bouwen. Dan is deze handleiding iets voor jou.

In deze handleiding bekijken we hoe je de Yahoo Finance API rechtstreeks vanuit Tableau kunt gebruiken zonder gebruik te maken van een database om de gegevens op te slaan. Deze ongebruikelijke methode maakt gebruik van de analytische extensie Tabpy en tabelextensies. Daarom gebruiken we hiervoor niet alleen Tableau, maar ook een beetje Python.

In deze blog ga ik niet in op hoe je Tabpy instelt op Tableau Desktop of Server. Ik zal echter wel de link geven die de installatie hiervan beschrijft:

Hoe Tabpy instellen in Tableau: https://www.theinformationlab.co.uk/community/blog/how-to-set-up-tabpy-in-tableau/

In de tutorial gebruik ik Tableau Desktop en daarom zal ik Tabpy lokaal uitvoeren en Tableau Desktop gebruiken.

Vereisten:

  • Tableau Desktop
  • Tabpy (Analytics-extensie)
  • een IDE(optioneel)
  • Enige kennis van Python
  • Python-pakketten:
    • pandas
    • yfinance
    • datetime

Ga hier naar de Tableau Public-pagina om de uiteindelijke visualisatie te bekijken. Opmerking: Dit dashboard is niet live, want om het op Tableau Public te plaatsen, moet je de gegevens extraheren. De configuraties van de tabelextensies kunnen echter nog steeds worden bekeken na het downloaden. Ik zal niet in detail bespreken hoe ik alle visualisaties in het dashboard heb geconfigureerd. De focus zal meer liggen op hoe je eerst de verbinding maakt en de gegevens ophaalt.

Tabpy instellen en uitvoeren

Om te beginnen moet je Tabpy installeren. Volg de link in de inleiding als je Tabpy nog niet op je computer (of server) hebt geïnstalleerd. Zodra het geïnstalleerd is, moet het draaien. Dus ga naar je terminal en typ tabpy in om het te starten.

De webservice luistert standaard op poort 9004. De volgende stap is dus om Tabpy te verbinden met Tableau. Ga na het starten van Tableau Desktop naar Help > Instellingen en prestaties > Analytics-extensie en -verbinding beheren

Controleer in het pop-upvenster of de hostnaam en de poort overeenkomen met localhost en 9004. Om er zeker van te zijn dat de verbinding werkt, kunt u deze ook testen. Zodra de verbinding tot stand is gebracht, zijn we klaar voor de volgende stap.

Schrijf de code en haal de gewenste gegevens op

Nu Tabpy is ingesteld en werkt, is de volgende stap het schrijven van de code om de gewenste gegevens op te halen uit de Yahoo Finance API. In deze stap zou ik aanraden om een IDE zoals Visual Studio Code te gebruiken om de code te ontwikkelen. Naar mijn mening werkt het beter om een tool als deze te gebruiken dan om de code meteen binnen Tableau te ontwikkelen. Ik gebruik Visual Studio Code met de Jupyter Notebook extensie.

Er is een geweldige gids over hoe te werken met de Yahoo Finance API in het algemeen, die ik uitgebreid heb gebruikt voor dit project: https://algotrading101.com/learn/yahoo-finance-api-guide/

Mijn doel in dit deel is om de aandeleninformatie van vier bedrijven op te halen: "Microsoft", "Snowflake", "Salesforce" en "Alteryx" voor de afgelopen 52 weken. Om verbinding te maken met de Yahoo Finance API, moeten we ook het pakket yfinance importeren. Zorg er dus voor dat je dit ook geïnstalleerd hebt in je terminal. Ook de pakketten pandas en datetime zijn nodig om relatieve datumberekeningen te doen en dataframes te maken.

Volledige code

Om te beginnen zullen we de benodigde pakketten importeren:

#import the necessary packages import pandas as pd import yfinance as yf from datetime import date, timedelta

Vervolgens definiëren we een lijst met tickers waaruit we de informatie willen halen en stellen we de tijdsperiode in, die 52 weken vanaf de datum van vandaag is:

#definieer de lijst van tickers waarvan je informatie wilt ophalen ticker_list = ["crm", "msft", "snow", "ayx"] #definieer de tijdsperiode waarin je gegevens wilt ophalen van end_date = date.today() start_date = end_date - timedelta(weeks=52)

Vervolgens gaan we een lege lijst maken waar we het woordenboek met aandeleninformatie opslaan voor de tickers van de bedrijven uit de vorige lijst. Hiervoor schrijven we een for-lus. Ik zal de tickernaam, de datum, open, close, high, low en volumewaarden van de vier bedrijven ophalen.

# Initialiseer een lege lijst om woordenboeken in op te slaandata_list = [] # Haal historische gegevens op voor elke ticker voor ticker in ticker_list: probeer: stock_data = yf.download(ticker, start=start_date, end=end_date) voor index, rij in stock_data.iterrows(): # Maak een woordenboek voor elke rij data data_dict = { 'Ticker': ticker, 'Date': index, 'Open': row['Open'], 'High': row['High'], 'Low': row['Low'], 'Close': row['Close'], 'Volume': row['Volume'] } # Voeg het woordenboek toe aan de lijst data_list.append(data_dict) print(f"Gedownloade gegevens voor {ticker}") except Exception as e: print(f"Mislukt bij het downloaden van gegevens voor {ticker}: {e}")

Nu zouden we erin geslaagd moeten zijn om de lijst met woordenboeken voor de gewenste waarden van de bedrijven te downloaden. Nu moeten we dit omzetten in een dataframe en het datatype veranderen in string:

# Maak een DataFrame van de lijst met woordenboekendf = pd.DataFrame(data_list) # Converteer de kolom 'Datum' naar een tekenreekstype df['Datum'] = df['Datum'].astype(str) # Print of gebruik het resulterende DataFrame zoals nodig df

Zodra we deze code uitvoeren, zouden we een dataframe moeten zien met de aandeleninformatie van Salesforce, Snowflake, Microsoft en Alteryx voor de afgelopen 52 weken.

De code importeren in Tableau

De volgende stap is om deze code live te laten draaien in een gegevensbron. Om dit te doen, is het belangrijkste hulpmiddel dat we gaan gebruiken de tabel extensies. Met tabelextensies kunnen we gegevenstabellen maken met een script van een analytische extensie, in dit geval Tabpy. Als we er zeker van zijn dat Tabpy draait in onze terminal en dat de verbinding met Tableau Desktop tot stand is gebracht, kunnen we een nieuwe gegevensbron maken. BELANGRIJK: In het begin kunnen we niet direct een tabeluitbreiding maken zonder een bron te selecteren. Daarom kun je in dit deel om het even welk bronbestand selecteren om te beginnen, we zullen het daarna toch verwijderen. Hiervoor maak ik rechtstreeks verbinding met het voorbeeldbestand van Global Superstore in Excel.

Dus zodra we alleen de tabel-extensie als verbinding hebben binnen de gegevensbron, kunnen we de code die we eerder hebben geschreven kopiëren en plakken in de tabel-extensie. Een zeer belangrijk detail om rekening mee te houden: Als we het dataframe dat we hebben gemaakt niet terug converteren naar een woordenboek, zal de tabelextensie de bron niet correct kunnen interpreteren. We kunnen hier alleen woordenboeken gebruiken, geen andere formaten, voeg daarom het codefragment toe:

return df.to_dict(orient = 'list')

toe aan het einde van het stukje code. Dit converteert het dataframe naar een woordenboek.

En daar zijn we dan, de gegevens lijken er goed doorheen te komen. Nu hoeven we alleen nog maar onze visuals te maken. Ik heb me hiervoor sterk laten inspireren door het Tableau Public dashboard van Maureen Okonkwo. In mijn versie heb ik KPI's gemaakt voor de bedrijven, die de close value per dag bijhouden, en een tabel met meer informatie, net als het dashboard van Maureen. Mijn Tableau Public-visualisatie kan hier worden bekeken en kan ook worden gedownload.

Slotopmerkingen

Concluderend kan worden gesteld dat deze handleiding de integratie van Tableau met de Yahoo Finance API heeft onderzocht en een unieke aanpak heeft laten zien door Tabpy en tabelextensies te gebruiken. Door Python te gebruiken naast Tableau Desktop, hebben we de noodzaak van een database omzeild en direct toegang gekregen tot live gegevens van Yahoo Finance. De stap-voor-stap tutorial behandelde het instellen van Tabpy, het samenstellen van code voor het ophalen van gegevens en het naadloos importeren van de code in Tableau.

De resulterende Tableau Public-visualisatie, geïnspireerd op het dashboard van Maureen Okonkwo, toont KPI's voor bedrijven, het bijhouden van de dagelijkse close value en een uitgebreide tabel met aanvullende informatie. Deze methode biedt niet alleen een dynamische manier om verbinding te maken met API's, maar opent ook mogelijkheden voor interactieve en realtime financiële datavisualisaties.

Bedankt voor het lezen van deze blog. Bekijk ook onze andere blogpagina voor meer blogs over Power BI, Tableau, Alteryx en Snowflake.

Werk samen met een van onze consultants en maximaliseer het effect van uw gegevens.

Neem contact met ons op en we helpen u direct.