股市与加密货币市场数据获取指南

在本文中,将向展示如何通过Python从互联网获取股市和加密货币市场的数据,并基于这些数据创建机器学习模型。将探索两种方法,它们都使用Yahoo Finance Python作为数据源,因为它是免费的,无需注册。当然,也可以选择其他数据源,如Quandl、Tiingo、IEX Cloud等。

准备工作

在开始之前,需要导入一些必要的Python库。将使用以下模块:

import pandas as pd import yfinance as yf from yahoofinancials import YahooFinancials

如果尚未安装这些库,可以通过pip进行安装:

!pip install yfinance !pip install yahoofinancials

第一种方法:使用yfinance

yfinance模块,原名为‘fix_yahoo_finance’,现在已经成为一个独立的模块,虽然它不是Yahoo的官方模块,但它是一个非常受欢迎的Python友好型库。这个库可以用于下载股票价格和加密货币价格等多种用途。下面,将通过代码下载苹果公司的股票价格。

aapl_df = yf.download('AAPL', start='2019-01-01', end='2021-06-12', progress=False) print(aapl_df.head())

数据间隔默认为1天,但可以通过参数如1m, 5m, 15m, 30m, 60m, 1h, 1d, 1wk, 1mo等进行外部指定。上述命令显示了下载数据的开始和结束日期,但也可以使用以下代码简单地下载数据:

aapl_df = yf.download('AAPL')

下载函数有许多参数,可以在文档中找到它们,其中start和end是最常用的。由于数据量较小,进度条被设置为false,对于大量数据,显示进度条是有意义的。

还可以一次性下载多个股票的价格。通过提供一个公司名称列表(例如['FB', 'MSFT', 'AAPL'])作为tickers参数,还可以提供一个额外的参数auto-adjust=True,以便所有当前价格都根据潜在的企业行动(如分割)进行调整。

除了yf.download函数,还可以使用ticker模块,并执行以下代码下载苹果公司过去5年的股票价格:

ticker = yf.Ticker('AAPL') aapl_df = ticker.history(period="5y") aapl_df['Close'].plot(title="APPLE's stock price")

使用ticker模块的一个优势是,可以利用与之相关的多种方法。可以使用的方法包括:

  • info - 此方法输出JSON格式的公司信息,包括业务全名、摘要、行业、上市交易所、国家和时区等。
  • beta - 此方法输出beta系数。
  • recommendations - 此方法包含不同分析师对股票的历史建议列表,包括购买、出售或提供建议。
  • actions - 显示分割和股息等行动。
  • major_holders - 显示主要股东及其他相关信息。
  • institutional_holders - 显示特定股票的所有机构持有者。
  • calendar - 此函数显示即将到来的事件,如盈利,甚至可以通过代码将其添加到Google日历中。

如果想了解更多关于这些函数的工作方式,可以查看yfinance的GitHub仓库。

第二种方法:使用yahoofinancials

第二种方法是使用yahoofinancials模块,这个模块比yfinance稍微难用一些,但它提供了比yfinance更多的信息。将首先下载苹果公司的股票价格。为此,将传递一个YahooFinancials对象,传入苹果的ticker名称,然后使用各种重要信息来获取所需的数据。这里返回的数据是JSON格式的,因此需要对其进行美化,以便将其转换为DataFrame以正确显示。

yahoo_financials = YahooFinancials('AAPL') data = yahoo_financials.get_historical_price_data(start_date='2019-01-01', end_date='2019-12-31', time_interval='weekly') aapl_df = pd.DataFrame(data['AAPL']['prices']) aapl_df = aapl_df.drop('date', axis=1).set_index('formatted_date') aapl_df.head()

从技术层面来看,获取历史股票价格的过程比yfinance要长一些,这主要是因为数据量较大。现在来看一些yahoofinancials的重要函数:

  • get_stock_quote_type_data() - 此方法返回关于股票的大量通用信息,类似于yfinance的info()函数。
  • get_summary_data() - 此方法返回公司的总结信息以及有用的数据,如beta值、价格与账面价值等。
  • get_stock_earnings_data() - 此方法返回公司的季度和年度盈利信息,以及公司下一次报告盈利的日期。
  • get_financial_stmts() - 这是另一个有用的方法,用于检索公司的财务报表,这对于股票分析很有用。
  • get_historical_price_data() - 这是一个类似于download()或Ticker()函数的方法,用于获取股票价格,包括开始日期、结束日期和间隔范围。

上述模块还可以像yfinance一样一次性下载公司数据,也可以下载加密货币数据,如下所示:

yahoo_financials = YahooFinancials('BTC-USD') data=yahoo_financials.get_historical_price_data("2019-07-10", "2021-05-30", "monthly") btc_df = pd.DataFrame(data['BTC-USD']['prices']) btc_df = btc_df.drop('date', axis=1).set_index('formatted_date') btc_df.head()
  • blogathon
  • python
  • web scraping
  • A Beginner's Guide to Data Engineering
  • Libraries
  • Project
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485