بارگیری چندین سهام به طور همزمان از یاهو مالی

ساخت وبلاگ

من در مورد عملکرد مالی یاهو با استفاده از خواننده داده Pandas سوالی دارم. من ماهها است که از لیستی با سهام سهام استفاده می کنم و آن را در خطوط زیر اجرا می کنم:

وارد کردن pandas_datareader به عنوان سهام واردات PDR DateTime = ["Stock1" ، "Stock2".] start = dateTime. DateTime (2012،5،31) پایان = dateTime. Datetime (2018،3،1) f = pdr. datareader (سهام ، "یاهو" ، شروع ، پایان) 

از دیروز خطای "indexerror: فهرست لیست خارج از محدوده" را دریافت می کنم ، که فقط در صورتی که سعی کنم چندین سهام دریافت کنم ، ظاهر می شود. آیا در روزهای اخیر چیزی تغییر کرده است ، که باید در نظر بگیرم یا شما راه حل بهتری برای مشکل من دارید؟

دنبال کردن 54. 6K 32 32 نشان طلا 137 137 نشان نقره 149 149 نشان برنز از 7 آوریل 2018 ساعت 7:33 پرسید Scharcomolten Scharcomolten 183 1 1 نشان طلا 1 1 نشان نقره 5 5 نشان برنز

5 پاسخ 5

مرتب شده توسط: تنظیم مجدد به طور پیش فرض

از سال 2021-01-19 به روز شده است

  • در این زمان ، اجرای OP بدون شماره ، برای بارگیری چندین سهام کار می کند.
  • نسخه: 0. 9. 0 تاریخ: 10 ژوئیه 2020
  • Github: Pydata / Pandas-Datareader
Tickers = ['msft' ، 'aapl' ، 'intc' ، 'tsm' ، 'goog' ، 'amzn' ، 'fb' ، 'nvda'] df = pdr. datareader (تیکرها ، data_source = 'yahoo' ، شروع= '2017-01-01' ، پایان = '2020-09-28') 

پاسخ اصلی

اگر مستندات Pandas DataReader را بخوانید ، آنها استهلاک فوری را در چندین منبع داده داده صادر کردند که یکی از آنها Yahoo! دارایی، مالیه، سرمایه گذاری.

V0. 6. 0 (24 ژانویه 2018)

استهلاک فوری یاهو!، گزینه ها و نقل قول های Google و Edgar. نقاط انتهایی این API ها به طور اساسی تغییر کرده اند و خوانندگان موجود نیاز به بازنویسی کامل دارند. در مورد بیشتر یاهو! داده ها نقاط پایانی حذف شده اند. PDR مایل است این ویژگی ها را بازیابی کند و درخواست های کشش استقبال می شود.

این می تواند مقصر این باشد که چرا شما در حال دریافت indexerror (یا هر خطای غیر عادی دیگری نیست).

با این حال ، یک بسته پایتون دیگر وجود دارد که هدف آن رفع پشتیبانی از Yahoo! مالی برای Pandas DataReader ، می توانید آن بسته را در اینجا پیدا کنید:

با توجه به مستندات آنها:

یاهوامور مالی API داده های تاریخی خود را از بین برد و باعث شد برنامه های بسیاری که به آن اعتماد کرده اند متوقف شوند.

Fix-Yahoo-Finance با استفاده از داده های Yahoo! امور مالی با استفاده از و بازگرداندن یک PANDAS DATAFRAME/PANEL در همان قالب با PANDAS_DATAREADER 'GET_DATA_YAHOO ().

با استفاده از "ربودن" pandas_datareader. data. get_data_yahoo () روش ، کاشت Fix-Yahoo-Finance آسان است و فقط نیاز به وارد کردن FIX_YAHOO_FINANCE به کد شما دارد.

تنها چیزی که باید اضافه کنید این است:

از داده های وارداتی pandas_datareader به عنوان واردات PDR fix_yahoo_finance به عنوان yf yf. pdr_override () سهام = ["Stock1" ، "Stock2" ،.] start = dateTime. DateTime (2012،5،31) پایان = dateTime. Datetime (2018،3،1) f = pdr. get_data_yahoo (سهام ، شروع = شروع ، پایان = پایان) 

یا بدون pandas datareader:

وارد کردن FIX_YAHOO_FINANCE به عنوان سهام YF = ["Stock1" ، "Stock2" ،.] start = dateTime. DateTime (2012،5،31) پایان = dateTime. Datetime (2018،3،1) داده = yf. download (سهام ، شروع = شروع ، پایان = پایان) 

دنبال کردن 54. 6K 32 32 نشان طلا 137 137 نشان نقره 149 149 نشان برنز پاسخ 7 آوریل 2018 ساعت 8:00 تاکو 31. 4K 11 11 نشان طلا 73 73 نشان نقره 85 85 نشان برنز 1 آوریل در 16:57

برای انجام این کار می توانید از ماژول جدید Python Yahoofinancials با پاندا استفاده کنید. Yahoofinancials به خوبی ساخته شده است و داده های خود را با هشدار دادن شیء Datastore موجود در هر صفحه وب مالی یاهو دریافت می کند ، بنابراین سریع است و به API قدیمی قطع شده و نه یک درایور وب مانند یک اسکرابر اعتماد نمی کند. داده ها به عنوان JSON بازگردانده می شوند و می توانید با عبور از لیستی از تیک های سهام/شاخص ، به همان اندازه که می خواهید سهام خود را بکشید تا کلاس Yahoofinancials را با آن آغاز کنید.

$ pip yahoofinancials را نصب کنید

from yahoofinancials import YahooFinancials پانداها را به صورت pd وارد کنید # انتخاب Tickers و تاریخ تاریخ سهام ticker = 'AAPL' ticker2 = 'MSFT' ticker3 = 'INTC' index = '^NDX' freq = 'روزانه' start_date = '2012-10-01'end_date = '01-10-2017' # تابع برای پاک کردن عصاره داده ها def clean_stock_data(stock_data_list): new_list = [] برای rec در stock_data_list: اگر 'type' در rec. keys(): new_list. append(rec) بازگشت new_list# اشیاء مالی یاهو را برای استخراج داده ها بسازید aapl_financials = YahooFinancials(ticker) mfst_financials = YahooFinancials(ticker2) intl_financials = YahooFinancials(ticker3) index_financials = YahooFinancials(index) # پاک کردن داده های تاریخچه سهام برگشتی و حذف تاریخچه سهام برگشتی از داده های تاریخچه سهام برگردانده شود. پیشانی ها. get_historical_stock_data(تاریخ_شروع، تاریخ_پایان، فرکانس)[ticker]['prices']) daily_msft_data = clean_stock_data(mfst_financials . get_historical_stock_data(تاریخ_شروع، تاریخ_پایان، فرکانس_تاریخ_پایان، فرکانس_تاریخ_پایان، فرکانس_تاریخ_پایان] cials . get_historical_stock_data(start_date، تاریخ پایان، فراوانیسهام و شاخص بازار آن تعریف build_data_frame (data_list1, data_list2, data_list3, data_list4): data_dict =<> i = 0 for list_item in data_list2: if 'type' not in list_item.keys(): data_dict.update(>) i += 1 tseries = pd. to_datetime(list(data_dict. keys())) df = pd. DataFrame(data=list(data_dict. values()), index=tseries, columns=['NDX', 'AAPL', 'MSFT', 'INTL']). sort_index() بازگشت df 

به عنوان مثال، داده های سهام چندگانه به طور همزمان (لیست اشیاء JSON را برای هر علامت برمی گرداند):

from yahoofinancials import YahooFinancials tech_stocks = ['AAPL', 'MSFT', 'INTC'] bank_stocks = ['WFC', 'BAC', 'C'] yahoo_financials_tech = YahooFinancials(tech_stocks) yahoo_financials_banks =yahoo_financials_banks =Yahoo_financials_banks =Yahoofinancials_anflows yahoo_financials_banks = YahooFinancials_tech_a فن آوریget_financial_stmts('سالانه'، 'نقد') bank_cash_flow_data_an = yahoo_financials_banks. get_financial_stmts('سالانه'، 'نقد نقد') banks_net_ebit = yahoo_financials_banks. get_ebit() tech_dack_dacktack _data() daily_bank_stock_prices = yahoo_financials_banks. get_historical_stock_data('2008-09-15'، '15-09-2017'، 'روزانه') 

مثال خروجی JSON:

yahoo_financials = YahooFinancials('WFC') print(yahoo_financials. get_historical_stock_data("2017-09-10"، "2017-10-10"، "ماهانه")) 
 <"WFC": <"prices": [ <"volume": 260271600, "formatted_date": "2017-09-30", "high": 55.77000045776367, "adjclose": 54.91999816894531, "low": 52.84000015258789, "date": 1506830400, "close": 54.91999816894531, "open": 55.15999984741211>]، "eventsData": []، "firstTradeDate":<"date": 76233600, "formatted_date": "1972-06-01">, "isPending": false، "timeZone":<"gmtOffset": -14400>, "id": "1mo15050196001507611600">> 
فارکس را از کجا شروع کنیم...
ما را در سایت فارکس را از کجا شروع کنیم دنبال می کنید

برچسب : نویسنده : لیما اصغرپورسازونی بازدید : 32 تاريخ : دوشنبه 13 شهريور 1402 ساعت: :