Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to track consecutive highs in a Pandas Series?

Tags:

python

pandas

I would like to track consecutive highs as shown in this picture in a timeseries with pandas. See the image below:

enter image description here

How can this be done with Pandas?

In case you would like to play with a real life example you can download the prices of a stock, say 'MSFT' and use the "close" for your example . There are multiple ways to download the stock price but here is one:

import yahooquery

ticker = Ticker('MSFT', asynchronous=True)

df = ticker.history()
like image 431
user8270077 Avatar asked Sep 16 '25 12:09

user8270077


1 Answers

Not enough data is returned to perform what you want. Using SO find min/max technique would work by analysing max column if data set did have consecutive local maximums.

import yahooquery
import matplotlib.pyplot as plt
import pandas as pd, numpy as np
from scipy.signal import argrelextrema

ticker = yahooquery.Ticker('MSFT', asynchronous=True)

df = ticker.history()
df = df.reset_index()

n = 5
df['min'] = df.iloc[argrelextrema(df.close.values, np.less_equal,
                    order=n)[0]]['close']
df['max'] = df.iloc[argrelextrema(df.close.values, np.greater_equal,
                    order=n)[0]]['close']

plt.scatter(df["date"], df['min'], c='r')
plt.scatter(df["date"], df['max'], c='g')
plt.plot(df["date"], df["close"])
plt.show()

enter image description here

like image 155
Rob Raymond Avatar answered Sep 19 '25 01:09

Rob Raymond