Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
375 views
in Technique[技术] by (71.8m points)

Calculation of stock values with yfinance and python

I would like to make some calculations on stock prices in Python 3 and I have installed the module yfinance.

I try to get an individual value like this:

import yfinance as yf

#define the ticker symbol
tickerSymbol = 'MSFT'

#get data on this ticker
tickerData = yf.Ticker(tickerSymbol)

#get the historical prices for this ticker
tickerDf = tickerData.history(period='1d', start='2015-1-1', end='2020-12-30')
row_date = tickerDf[tickerDf['Date']=='2020-12-30']
value = row_date.Open.item()

#see your data
print (value)

But when I run this, it says:

KeyError: 'Date'

Which is strange because when I do this, it works well and I have the column Date:

import yfinance as yf

#define the ticker symbol
tickerSymbol = 'MSFT'

#get data on this ticker
tickerData = yf.Ticker(tickerSymbol)

#get the historical prices for this ticker
tickerDf = tickerData.history(period='1d', start='2015-1-1', end='2020-12-30')
#row_date = tickerDf[tickerDf['Date']=='2020-12-30']
#value = row_date.Open.item()

#see your data
print (tickerDf)

I get the following result:

G:python> python test.py
              Open        High         Low       Close    Volume  Dividends  Stock Splits
Date
2014-12-31   41.512481   42.143207   41.263744   41.263744  21552500        0.0             0
2015-01-02   41.450302   42.125444   41.343701   41.539135  27913900        0.0             0
2015-01-05   41.192689   41.512495   41.086088   41.157158  39673900        0.0             0
2015-01-06   41.201567   41.530255   40.455355   40.553074  36447900        0.0             0
2015-01-07   40.846223   41.272629   40.410934   41.068310  29114100        0.0             0
...                ...         ...         ...         ...       ...        ...           ...
2020-12-22  222.690002  225.630005  221.850006  223.940002  22612200        0.0             0
2020-12-23  223.110001  223.559998  220.800003  221.020004  18699600        0.0             0
2020-12-24  221.419998  223.610001  221.199997  222.750000  10550600        0.0             0
2020-12-28  224.449997  226.029999  223.020004  224.960007  17933500        0.0             0
2020-12-29  226.309998  227.179993  223.580002  224.149994  17403200        0.0             0

[1510 rows x 7 columns]

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Under the hood, yfinance uses a Pandas data frame to create a Ticker. In this dataframe, Date isn't an ordinary column, but is instead a name given to the index (see line 240 in base.py of yfinance). The index column behaves differently than other columns and actually can't be referenced by name. You can access it using TickerDf.index=='2020-12-30' or by turning it into a regular column using reset_index as explained in another question. Searching through an index is faster than searching a regular column, so if you are looking through a lot of data, it will be to your advantage to leave it as an index.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...