Search code examples
pythonpython-3.xstockyahoo-finance

how to get dates from yahoo finance


I have a problem with getting the dates from yfinance into my matplotlib graph can somebody help/show me how to get the dates from yfinance into my matplotlib graph

import numpy as np
import yfinance as yf
import matplotlib.pyplot as plt
import pandas as pd

# function getting data for the last x years with x weeks space from checking data and specific 
observation.
def stock_data(ticker, period, interval, observation):
    ticker = yf.Ticker(ticker)
    ticker_history = ticker.history(period, interval)
    print(ticker_history[observation]) #is here to show you the data that we get
    date = pd.date_range(ticker_history[period])
    x = date 
    y = np.array(ticker_history[observation])
    plt.style.use('dark_background')
    plt.plot(x,y)
    plt.ylabel('Price($)')
    plt.xlabel('Date', rotation=0)
    plt.show()

stock_data('GOOGL', '6mo', '1wk', 'Open')

Solution

  • Tested ✅

    🔰You could extract the date from ticker_history[observation]
    🔰 It is a Pandas Series object, so here's how I'd do it:

    import numpy as np
    import yfinance as yf
    import matplotlib.pyplot as plt
    import pandas as pd
    
    # function getting data for the last x years with x weeks space 
    # from checking data and specific observation.
    def stock_data(ticker, period, interval, observation):
        ticker = yf.Ticker(ticker)
        ticker_history = ticker.history(period, interval)
        print((ticker_history[observation])) 
    
        sf = ticker_history[observation]
        df = pd.DataFrame({'Date':sf.index, 'Values':sf.values})
    
        x = df['Date'].tolist()
        y = df['Values'].tolist()
    
        plt.style.use('dark_background')
        plt.plot(x,y)
        plt.ylabel('Price($)')
        plt.xlabel('Date', rotation=0)
        plt.show()
    
    if __name__ == '__main__':
        stock_data('GOOGL', '6mo', '1wk', 'Open')