Python yfinance 模块

Python yfinance 模块

有很多情况下,我们需要获取博客网站或者浏览器的财务数据或者报表。一个允许我们收集其财务数据的著名浏览器是 Yahoo,实际上,我们有很多需要执行此任务的情况。在本教程中,我们将学习 Python 中的 yfinance 模块,学习如何使用该模块从 Yahoo 获取财务数据以及我们可以收集到什么样的数据。

Python 中的 yfinance 模块

yfinance 是 Python 中著名的模块之一,用于收集在线数据,借助它可以收集 Yahoo 的财务数据。通过 yfinance 模块的帮助,我们可以使用其函数来检索和收集公司的财务信息(如财务比率等)以及营销数据的历史。但在我们开始学习更多关于该模块的信息、实施以及应用之前,我们需要在系统中安装 yfinance 模块(因为它不是 Python 的内置模块)。一旦安装过程完成,我们就会开始进行 yfinance 模块的实施部分。

安装

在本节中,我们将学习如何在系统中安装 yfinance 模块,以便我们可以导入它到程序中并使用其函数。我们需要按照以下步骤来在设备上安装 yfinance 模块:

步骤1: 打开设备的命令提示符终端,并定位 Python 安装在系统中的目录(使用 mkdir)。

步骤2: 现在在终端中写入以下命令来使用 pip 安装器安装 yfinance 模块:

pip install yfinance

Python yfinance 模块

步骤3: 当我们按下回车键时,pip安装程序将在定义的路径上开始在系统中安装yfinance模块。

Python yfinance 模块

如我们所见,yfinance模块已经成功安装在我们的系统中,现在我们可以通过将其导入到Python程序中开始使用它。

实现

现在,我们将在我们的Python程序中使用yfinance模块,以便我们可以使用它从Yahoo收集财务数据,并理解其实现。当我们在程序中使用yfinance模块时,我们必须将股票代码作为参数传递给函数(这里,股票代码被称为公司的股票代码)。

注意: 股票代码基本上是公司名称的股票符号或唯一的字母序列,它被分配用于增加额外的交易安全层。看看以下我们将在yfinance模块中使用的股票代码的示例:

  • Google的股票代码是”GOOGL”
  • Facebook的股票代码是”FB”
  • 而Amazon的股票代码是”AMZN”,等等。

现在,让我们在各种示例程序中使用yfinance模块,以便我们可以轻松理解其功能和实现。看看以下使用yfinance模块进行数据收集的示例程序:

示例1:

看看以下Python程序,我们将从Yahoo财务中检索Facebook的财务数据:

# Import yfinance module in the program
import yfinance as yahooFin
# Using ticker for the Facebook in yfinance function
retrFBInfo = yahooFin.Ticker("FB")
# Printing Facebook financial information in the output
print(retrFBInfo.info)

输出:

{'zip': '94025', 'sector': 'Communication Services', 'fullTimeEmployees': 63404, 'longBusinessSummary': "Facebook, Inc. develops products that enable people to connect and share with friends and family through mobile devices, personal computers, virtual reality headsets, and in-home devices worldwide. The company's products include Facebook that enables people to connect, share, discover, and communicate with each other on mobile devices and personal computers; Instagram, a community for sharing photos, videos, and private messages; Messenger, a messaging application for people to connect with friends, family, groups, and businesses across platforms and devices; and WhatsApp, a messaging application that is used by people and businesses to communicate in a private way. It also provides Facebook Reality Labs, an augmented and virtual reality product that help people feel connected, anytime, and anywhere. Facebook, Inc. was founded in 2004 and is headquartered in Menlo Park, California.", 'city': 'Menlo Park', 'phone': '650-543-4800', 'state': 'CA', 'country': 'United States', 'companyOfficers': [], 'website': 'http://investor.fb.com', 'maxAge': 1, 'address1': '1601 Willow Road', 'industry': 'Internet Content & Information', 'ebitdaMargins': 0.49698, 'profitMargins': 0.37175998, 'grossMargins': 0.80977, 'operatingCashflow': 49358000128, 'revenueGrowth': 0.556, 'operatingMargins': 0.42523, 'ebitda': 52079001600, 'targetLowPrice': 225, 'recommendationKey': 'buy', 'grossProfits': 69273000000, 'freeCashflow': 22740000768, 'targetMedianPrice': 425, 'currentPrice': 330.05, 'earningsGrowth': 1.006, 'currentRatio': 5.425, 'returnOnAssets': 0.17950001, 'numberOfAnalystOpinions': 50, 'targetMeanPrice': 417.22, 'debtToEquity': 9.089, 'returnOnEquity': 0.31332, 'targetHighPrice': 500, 'totalCash': 64079998976, 'totalDebt': 12563000320, 'totalRevenue': 104789999616, 'totalCashPerShare': 22.728, 'financialCurrency': 'USD', 'revenuePerShare': 36.82, 'quickRatio': 5.095, 'recommendationMean': 1.9, 'exchange': 'NMS', 'shortName': 'Facebook, Inc.', 'longName': 'Facebook, Inc.', 'exchangeTimezone

说明:

首先,我们在程序中导入了yfinance模块,并将其命名为yahooFin,以使用其功能。然后,我们使用yahooFin的FB Ticker函数来收集来自Yahoo的Facebook页面的所有财务信息。从Yahoo的Facebook页面检索到财务信息后,我们在程序执行时将此信息打印出来。

如我们在输出中所见,我们将所有财务数据打印为一个完整的Python字典。

从Yahoo收集财务关键指标

除了从Yahoo网站检索财务信息(如示例1中所做),我们甚至可以从上述第一个示例中打印的整个Python字典中收集各种财务关键指标。这些财务关键指标可以是市盈率、公司贝塔和公司行业等。让我们使用yfinance模块检索财务关键指标。

示例2:

请查看以下Python程序,我们将使用yfinance模块从Yahoo中检索财务关键指标:

# Import yfinance module
import yfinance as yahooFin
# Using ticker for the Facebook in yfinance function
retrFBInfo = yahooFin.Ticker("FB")
# Getting Key metrics from the Facebook financial data we retrieved
comSecKey = retrFBInfo.info['sector'] # Company Sector key
keyPER = retrFBInfo.info['trailinPE'] # Price Earning ratio key
comBetaKey = retrFBInfo.info['beta'] # Company Beta key
# Print the Company Sector Information
print("The Company Sector Metric key we collected from the page: ", comSecKey)
# Print the Price Earnings Ratio (PER) from the FB page
print("The Price Earnings Ratio (PER) we got from the financial data of page: ", keyPER)
# Print the Company Beta metric from page
print("The Company Beta key we retrieved from page: ", comBetaKey)

输出:

The Company Sector Metric key we collected from the page:  Communication Services
The Price Earnings Ratio (PER) we got from the financial data of page:  26.211199
The Company Beta key we retrieved from page:  1.295305

说明:

在这个程序中,我们没有从页面中检索完整的财务数据信息,而是只检索了一组有限的财务关键指标。我们首先初始化了三个变量(keyPer、comSecKey和comBetaKey),并将从我们从Facebook页面收集到的财务数据中的财务关键指标的值存储在这些变量中。在这个示例中,我们检索了市盈率、公司贝塔和公司部门的财务指标键,并将它们存储在各自的变量中。在存储了财务指标键之后,我们将它们作为结果打印出来,从输出中可以看到,详情成功打印出来了。

分割财务指标键

在第一个和第二个示例中,我们按照它们的字典值打印了财务数据和指标键。但是我们甚至可以通过键值对的方式将这些值进行分割,然后打印分割结果。在下面的示例中,我们将通过循环将财务指标键的值分割并打印出来。

第三个示例:

看看下面的Python程序,我们将把财务指标键分割成键值对:

# Import yfinance module
import yfinance as yahooFin
# Using ticker for the Facebook in yfinance function
retrFBInfo = yahooFin.Ticker("FB")
# Looping over items to split them in key-value pair
print("Items from the financial data of the Facebook page in the key-value page: ")
for keyItem, valueItem in retrFBInfo.info.items():
    print(keyItem, ":", valueItem)    

输出:

Items from the financial data of the Facebook page in the key-value page: 
zip : 94025
sector : Communication Services
fullTimeEmployees : 63404
longBusinessSummary : Facebook, Inc. develops products that enable people to connect and share with friends and family through mobile devices, personal computers, virtual reality headsets, and in-home devices worldwide. The company's products include Facebook that enables people to connect, share, discover, and communicate with each other on mobile devices and personal computers; Instagram, a community for sharing photos, videos, and private messages; Messenger, a messaging application for people to connect with friends, family, groups, and businesses across platforms and devices; and WhatsApp, a messaging application that is used by people and businesses to communicate in a private way. It also provides Facebook Reality Labs, an augmented and virtual reality product that help people feel connected, anytime, and anywhere. Facebook, Inc. was founded in 2004 and is headquartered in Menlo Park, California.
city : Menlo Park
phone : 650-543-4800
state : CA
country : United States
companyOfficers : []
website : http://investor.fb.com
maxAge : 1
address1 : 1601 Willow Road
industry : Internet Content & Information
ebitdaMargins : 0.49698
profitMargins : 0.37175998
grossMargins : 0.80977
operatingCashflow : 49358000128
revenueGrowth : 0.556
operatingMargins : 0.42523
ebitda : 52079001600

解释:

在从雅虎获取Facebook金融数据后,我们对其进行了循环处理。在循环的帮助下,我们遍历了数据,然后将数据项拆分为键-值对。最后,我们将这些键-值对打印在程序的输出中。

检索历史市场价格

我们甚至可以从雅虎金融数据中检索到历史市场价格,然后可以将这些信息打印在输出中。

示例4:

我们先看下面的示例,然后我们会更加了解如何检索历史市场价格:

# Import yfinance module
import yfinance as yahooFin
# Using ticker for the Facebook in yfinance function
retrFBInfo = yahooFin.Ticker("FB")
# Initializing variable for retrieving market prices
maxHisMP = retrFBInfo.history(period="max")
# Printing the historical market prices in the output
print("Historical Market Prices data from the Facebook page financial data of Yahoo: ")
print(maxHisMP)

输出:

Historical Market Prices data from the Facebook page financial data of Yahoo: 
                  Open        High         Low       Close     Volume  \
Date                                                                    
2012-05-18   42.049999   45.000000   38.000000   38.230000  573576400   
2012-05-21   36.529999   36.660000   33.000000   34.029999  168192700   
2012-05-22   32.610001   33.590000   30.940001   31.000000  101786600   
2012-05-23   31.370001   32.500000   31.360001   32.000000   73600000   
2012-05-24   32.950001   33.209999   31.770000   33.029999   50237200   
...                ...         ...         ...         ...        ...   
2021-10-04  335.529999  335.940002  322.700012  326.230011   42885000   
2021-10-05  328.579987  335.179993  326.160004  332.959991   35377900   
2021-10-06  329.739990  334.380005  325.799988  333.640015   26443000   
2021-10-07  337.000000  338.839996  328.980011  329.220001   28307500   
2021-10-08  331.510010  333.399994  328.709991  330.049988   15934300   

            Dividends  Stock Splits  
Date                                 
2012-05-18          0             0  
2012-05-21          0             0  
2012-05-22          0             0  
2012-05-23          0             0  
2012-05-24          0             0  
...               ...           ...  
2021-10-04          0             0  
2021-10-05          0             0  
2021-10-06          0             0  
2021-10-07          0             0  
2021-10-08          0             0  

[2364 rows x 7 columns]

解释:

在这个示例中,我们从我们在程序中检索到的Yahoo页面中导入了Facebook财务数据的历史市场价格。我们使用history()函数和FB交易代码检索了Facebook财务数据的历史市场价格,然后将信息存储在我们初始化的变量maxHisMP中。最后,我们将这些历史市场价格信息作为程序的输出打印出来。我们可以看到关于Yaho财务数据中可用的最长时间段的市场价格历史的信息。

注意:我们在history函数中使用的’max’关键字与FB交易代码一起定义,用于收集Yahoo中可用的最长时间段的市场价格历史。max关键字将检索Facebook在Yahoo上可用的每日价格变动历史。

现在,我们已经了解了如何使用history()函数从Yahoo的财务数据中获取市场价格历史记录。但是在这里,有一件事情,我们甚至可以通过在history()函数中给定固定的时间参数来减少获取的数据的复杂性。我们可以通过在history()函数中给定固定的时间参数并从Yahoo中检索仅少量的数据来实现这一点。

这里,我们将以两种方式执行此功能,如下所示:

1. 通过在history函数中提供固定的时间参数,收集自上次的“1天”或“5天”或“1个月”或“3个月”等固定时间段的数据。让我们通过在程序中使用固定的时间参数并从Yahoo检索市场价格来理解这一点。

示例5:

请看下面的Python程序,我们将从Facebook中检索过去3个月的历史市场价格:

# Import yfinance module
import yfinance as yahooFin
# Using ticker for the Facebook in yfinance function
retrFBInfo = yahooFin.Ticker("FB")
# Initializing variable for retrieving market prices
his3MonMP = retrFBInfo.history(period="3mo")
# Printing the historical market prices in the output
print("Historical Market Prices data of last 3 months from the Facebook page of Yahoo: ")
print(his3MonMP)

输出:

Historical Market Prices data of last 3 months from the Facebook page of Yahoo: 
                  Open        High         Low       Close    Volume  \
Date                                                                   
2021-07-09  345.320007  350.709991  345.269989  350.420013  13018700   
2021-07-12  351.230011  354.190002  349.640015  353.160004  10018600   
2021-07-13  351.500000  358.489990  348.799988  352.089996  11456000   
2021-07-14  354.559998  355.200012  346.730011  347.630005  13894200   
2021-07-15  349.230011  349.230011  340.220001  344.459991  14781600   
...                ...         ...         ...         ...       ...   
2021-10-04  335.529999  335.940002  322.700012  326.230011  42885000   
2021-10-05  328.579987  335.179993  326.160004  332.959991  35377900   
2021-10-06  329.739990  334.380005  325.799988  333.640015  26443000   
2021-10-07  337.000000  338.839996  328.980011  329.220001  28307500   
2021-10-08  331.510010  333.399994  328.709991  330.049988  15934300   

            Dividends  Stock Splits  
Date                                 
2021-07-09          0             0  
2021-07-12          0             0  
2021-07-13          0             0  
2021-07-14          0             0  
2021-07-15          0             0  
...               ...           ...  
2021-10-04          0             0  
2021-10-05          0             0  
2021-10-06          0             0  
2021-10-07          0             0  
2021-10-08          0             0  

[65 rows x 7 columns]

说明:

我们使用了与前面示例程序中相同的逻辑,并从Yahoo的Facebook页面收集了历史市场价格数据。但是,在这个程序中,我们没有收集最大数量的数据,而是通过在history函数中提供参数’3mo’来限制了我们的数据,以便只检索最近三个月的市场价格历史。然后,我们将这最近三个月的市场价格历史作为输出打印出来。

从输出中可以看出,只有最近三个月以来的Facebook页面的市场价格历史被打印出来了。

注意:当我们需要收集过去某个固定时间的数据时,就不能在history函数中给出任何持续时间参数,因为它将不是一个有效的参数。对于yfinance模块的history函数,我们有以下有效的固定时间段参数:max、ytd、10y、5y、2y、1y、6mo、3mo、1mo、5d和1d。如果在history()函数中给出任何其他时间段参数,它将被视为无效参数,并且不会检索到市场价格历史数据。

2. 通过将起始时间和结束时间作为history()函数的参数来收集固定数据。我们可以通过定义起始时间和结束时间变量,并将这些变量作为history()函数的参数来检索我们想要的时间段的数据。让我们通过在程序中使用这些定义的时间参数,并从Yahoo检索市场价格历史来理解这个过程。

示例6:

请看下面的Python程序,我们将从Facebook中检索用户定义的市场价格历史数据的时间段:

# Import yfinance module
import yfinance as yahooFin
# Importing datetime module in the program
import datetime
# Using ticker for the Facebook in yfinance function
retrFBInfo = yahooFin.Ticker("FB")
# Define a start date variable
strtDate = datetime.datetime(2021, 4, 26)
# Define an end date variable
endDate = datetime.datetime(2021, 8, 6)
# Initializing variable for retrieving market prices
fixTimeMP = retrFBInfo.history(start = strtDate, end = endDate)
# Printing the historical market prices in the output
print("Historical Market Prices data of the time period we defined from the financial data of Facebook page: ")
print(fixTimeMP)

输出:

Historical Market Prices data of the time period we defined from the financial data of Facebook page: 
                  Open        High         Low       Close    Volume  \
Date                                                                   
2021-04-26  303.339996  305.799988  301.559998  303.040009  16172600   
2021-04-27  304.279999  305.339996  301.109985  303.570007  15309300   
2021-04-28  307.359985  310.920013  305.369995  307.100006  33907200   
2021-04-29  330.119995  331.809998  321.609985  329.510010  56526800   
2021-04-30  326.140015  329.820007  324.500000  325.079987  26332400   
...                ...         ...         ...         ...       ...   
2021-07-30  354.000000  360.730011  352.940002  356.299988  15966700   
2021-08-02  358.100006  359.399994  350.739990  351.950012  13180400   
2021-08-03  352.730011  353.769989  347.700012  351.239990  12406100   
2021-08-04  352.420013  360.480011  351.510010  358.920013  14180600   
2021-08-05  359.640015  363.899994  356.899994  362.970001  10247200   

            Dividends  Stock Splits  
Date                                 
2021-04-26          0             0  
2021-04-27          0             0  
2021-04-28          0             0  
2021-04-29          0             0  
2021-04-30          0             0  
...               ...           ...  
2021-07-30          0             0  
2021-08-02          0             0  
2021-08-03          0             0  
2021-08-04          0             0  
2021-08-05          0             0  

[72 rows x 7 columns]

解释:

我们在这个程序中导入了yfinance和datetime模块,这样我们就可以使用datetime模块的datetime()函数。然后,我们定义了两个变量,使用datetime模块的datetime函数在其中设置了起始日期和结束日期。然后,我们将这些变量用作history()函数的起始日期和结束日期,从Yahoo检索数据。我们在history()函数中使用了start和end关键字来设置收集数据的起始日期和结束日期。这样我们就可以从Yahoo检索用户固定时间的市场价格历史数据。最后,我们以输出形式打印了最小化的数据。

从输出中可以看出,我们从Yahoo获取了固定时间(在程序中设置的时间)的市场价格历史数据。

结论

在本教程中,我们讨论了如何在Python程序中使用yfinance模块简单地检索Yahoo的财务数据或Yahoo的各个财务数据方面,通过使用模块中提供的函数,然后我们可以打印出这些数据以供进一步使用。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程