Օգտագործելով yfinance Python-ում S&P 500 բաժնետոմսերի տվյալներ մուտք գործելու համար

Այս հոդվածում ես պատրաստվում եմ ձեզ ցույց տալ, թե ինչպես կարելի է ստանալ S&P 500 պատմական բաժնետոմսերի տվյալները Yahoo Finance-ից, առբերել S&P 500-ը կազմող բաժնետոմսերը և ստանալ կարևոր ֆինանսական տեղեկատվություն յուրաքանչյուր բաժնետոմսի մասին:

Պարզության համար ես կօգտագործեմ Google Colab նոթատետրը դա ցույց տալու համար: Դուք կարող եք նաև հեշտությամբ օգտագործել Python-ի տեղական օրինակը: Իսկապես կախված է ձեզանից, թե որ մեթոդն եք նախընտրում: Ես հոդված եմ գրել, որը կօգնի ձեզ կարգավորել:



Բաժնետոմսերի տվյալների առբերում Python-ում yfinance-ի միջոցով

Python-ում yfinance գրադարանը լռելյայն հասանելի չէ Google Colab-ում: Մեզ անհրաժեշտ կլինի տեղադրել այն:

pip install yfinance

Երբ այն տեղադրվի, մենք այն կներմուծենք հետևյալ կերպ.

import yfinance as yf

Yahoo Finance-ում S&P 500-ի նշանի կոդը «^GSPC» է: Հետևյալ հրամանը կստեղծի օբյեկտ S&P 500 ինդեքսի համար:

ticker = yf.Ticker("^GSPC")

Հաստատելու համար, որ այն աշխատում է, մենք կարող ենք առբերել ցուցիչի տեղեկատվությունը:

ticker.info

Այստեղ շատ օգտակար տեղեկություններ կան: Ընդամենը առանձնացնելու համար մի քանի…

Քանի որ S&P 500-ը ինդեքս է, որոշ դաշտեր, ինչպիսիք են logo_url-ը, կարող են չաշխատել: Առնվազն Clearbit-ը դրա համար լոգո չի պահում: Սա գործնականում տեսնելու համար մենք կարող ենք համառոտ օգտագործել Apple-ի նշանը (AAPL):

ticker = yf.Ticker("AAPL")

«logo_url»-ն ունի որոշ հետաքրքիր ներուժ: Միգուցե այն կարող է օգտագործվել իսկապես գեղեցիկ վահանակ ստեղծելու համար:

Պատկերը կարող ենք ներբեռնել այսպես…

import urllib.request
urllib.request.urlretrieve(ticker.info["logo_url"], "logo.png")

Սա կներբեռնի պատկերը URL-ից «logo_url» դաշտում և կպահի այն տեղայնորեն որպես «logo.png»:

Այնուհետև մենք կարող ենք կարդալ նկարում և ցուցադրել այն: Ես ունեմ դա անելու մի քանի եղանակ, բայց դրանցից միայն մեկը կաշխատի Google Colab-ի հետ: Եթե ​​դուք աշխատում եք Python-ի տեղական տարբերակի հետ, կարող եք նման բան անել:

from PIL import Image
img = Image.open("logo.png")
img.show()

Չնայած կոդը աշխատում է, Google Colab նոթատետրում պատկերը չի ցուցադրվի: Google Colab-ում պատկերը ցուցադրելու ձևը հետևյալն է…

import cv2
import matplotlib.pyplot as plt

img_color = cv2.imread("logo.png", 1)

plt.imshow(img_color)
plt.axis("off")
plt.show()

Պատկերանշանը մշուշոտ է թվում վերևի սքրինշոթում, բայց դա միայն այն պատճառով է, որ Medium-ը մեծացնում է պատկերը: Ինձ համար պարզ է թվում:

Մենք կարող ենք նաև առբերել ամենօրյա միջօրեական պատմական տվյալներն այսպես.

df = yf.download (tickers = "^GSPC", start = "1994-01-07", end = "2022-12-04", interval = "1d")
df

Այն, ինչ ինձ իսկապես դուր է գալիս, այն է, որ տվյալները վերադարձվում են որպես Pandas DataFrame: Սա իսկապես հարմար է և խուսափում է ինքնուրույն կատարել փոխակերպման քայլը:

Եթե ​​դուք նոր եք Google Colab-ում, ապա կնկատեք, որ կարիք չկա տպել փոփոխականներ: Դուք կարող եք ուղղակիորեն զանգահարել նրանց, և դրանք կցուցադրվեն: Եթե ​​դուք աշխատում եք Python-ի տեղական տարբերակով, ապա պետք է df-ը փոխարինեք print (df)-ով:

S&P 500 բաժնետոմսերի առբերում՝ օգտագործելով վեբ քերծվածք

Yahoo Finance-ը չի տրամադրում S&P 500 ինդեքսը կազմող բաժնետոմսերի ցանկը, մենք պետք է այլ ճանապարհ գտնենք դա անելու համար:

Եթե ​​նայեք Վիքիպեդիայի էջը S&P 500-ի համար, ապա բոլոր բաժնետոմսերը նշված են այնտեղ: Այն, ինչ մենք կանենք, այն է, որ վերցնենք չմշակված HTML-ը, ճիշտ ձևաչափենք այն և հետո հանենք մեզ անհրաժեշտ տեղեկատվությունը: Կան մի քանի գրադարաններ, որոնք մեզ պետք են դա իրականացնելու համար:

import requests
import bs4 as bs

«հարցումներ»-ը HTTPS հարցում կկատարի HTML-ն առբերելու համար: «bs4»-ը գեղեցիկ ապուր է և Python փաթեթ է՝ HTML և XML փաստաթղթերը վերլուծելու համար: Այն վերլուծված էջերի համար ստեղծում է վերլուծական ծառ, որը կարող է օգտագործվել HTML-ից տվյալներ հանելու համար, ինչը օգտակար է վեբ քերծման համար:

  1. Վերցրեք HTML էջը փոփոխականի մեջ, որը կոչվում է «resp»: «resp.text()»-ը կպարունակի չմշակված HTML տեքստ:
resp = requests.get("http://en.wikipedia.org/wiki/List_of_S%26P_500_companies")

2. Օգտագործեք Beautiful Soup-ը HTML-ը ճիշտ ձևավորելու համար: «ապուր» փոփոխականը կպարունակի գեղեցիկ ներկայացված HTML կոդը:

soup = bs.BeautifulSoup(resp.text, "lxml")

3. Փնտրեք Վիքիպեդիայի էջում պարունակվող HTML աղյուսակը և այն հանեք «աղյուսակ» տեքստային փոփոխականի մեջ։

table = soup.find("table", { "class": "wikitable sortable" })

4. Յուրաքանչյուր տողի աղյուսակում կլինեն HTML TR թեգեր տողերի համար և TD թեգեր սյունակների համար, որոնք կպարունակեն ընկերության տեղեկատվությունը, որը մենք փնտրում ենք: Ես ստեղծեցի «tickers» զանգված և կրկնեցի տողերի միջով (բացառությամբ վերնագրի): Այնուհետև ես յուրաքանչյուր ընկերության բաժնետոմսերի կոդը կցեցի «tickers» զանգվածին և վերջում հանեցի նոր տողի նիշը:

tickers = []
for row in table.findAll("tr")[1:]:
  ticker = row.findAll("td")[0].text
  tickers.append(ticker.strip())

Արդյունքն այսպիսի տեսք ունի…

Բաժնետոմսերի տեղեկատվության առբերում Python-ում yfinance-ի միջոցով

Yahoo Finance-ը տրամադրում է մի քանի իսկապես օգտակար տեղեկատվություն յուրաքանչյուր բաժնետոմսի մասին: Ես պարզապես պատահականորեն ընտրեցի վերը նշված ցուցակից մեկը՝ «GOOG»:

company = yf.Ticker("GOOG")
company.financials

company.earnings

Գաղափարների ոգեշնչում

Այն, ինչ կարող է լինել բավականին զվարճալի նախագիծ, կլինի ստեղծել վեբ վահանակ՝ օգտագործելով Python Django/Flask-ը, ստանալ S&P 500-ի բաժնետոմսերը՝ ներառյալ դրանց անվանումը և պատկերանշանը, և կկարողանաք խորացնել ֆինանսական տվյալները, ինչպես վերը նշված է:

Մայքլ Ուիթլ