من در مورد عملکرد مالی یاهو با استفاده از خواننده داده 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 ساعت: :