Je suis nouveau dans Python et j'apprends en faisant quelques analyses de données boursières de base. Ci-dessous se trouve le dataframe que j'utilise
date open high ... close volume
0 2010-01-05 09:16:00 5282.00 5283.10 ... 5281.10 94700 NaN
1 2010-01-05 12:16:00 5281.60 5281.60 ... 5278.30 49100 NaN
2 2010-01-05 16:16:00 5278.50 5280.50 ... 5278.80 62550 NaN
3 2010-01-06 09:16:00 5278.80 5279.45 ... 5277.30 64850 NaN
4 2010-01-06 12:16:00 5277.95 5278.00 ... 5276.00 65251 NaN
Comme vous pouvez le constater, c'est une série temporelle où il y a différents intervalles de temps dans une journée. Je veux donc trouver le taux de variation (variation en pourcentage) de l'ouverture de 2010-01-06 09:16:00
par rapport à la clôture de 2010-01-05 16:16:00
. comment pourrais-je le calculer?
Voici le type de sortie que je recherche:
date open high ... close volume %change
0 2010-01-05 09:16:00 5282.00 5283.10 ... 5281.10 94700
1 2010-01-05 12:16:00 5281.60 5281.60 ... 5278.30 49100
2 2010-01-05 16:16:00 5278.50 5280.50 ... 5278.80* 62550
3 2010-01-06 09:16:00 5278.80* 5279.45 ... 5277.30 64850 0
4 2010-01-06 12:16:00 5277.95 5278.00 ... 5276.00 65251
La colonne %change
a 0 pour la clôture de 2010-01-05
à l'ouverture de 2010-01-05 9:16
car l'ouverture = clôture (5278.80 == 5278.80) (marqué par *).
Note : J'ai manipulé un peu les données car je travaillais dessus. Voici les codes:
import pandas as pd
import datetime
df = pd.read_csv(r'C:\Users\Admin\Desktop\Python files\nifty.txt' , sep = ';' , names = ["dates","open","high","low","close","volume"])
## formation de la date et de l'heure
df['dates'] = pd.to_datetime(df['dates'].astype(str) , format='%Y%m%d %H%M%S' )
## division de la colonne datetime en date et heure
df['date'] = [d.date() for d in df['dates']]
df['time'] = [d.time() for d in df['dates']]
Le dataframe actuel ressemble à ceci:
dates open high ... volume date time
0 2010-01-05 09:16:00 5282.00 5283.10 ... 94700 2010-01-05 09:16:00
1 2010-01-05 12:16:00 5281.60 5281.60 ... 49100 2010-01-05 12:16:00
2 2010-01-05 16:16:00 5278.50 5280.50 ... 62550 2010-01-05 16:16:00
3 2010-01-06 09:16:00 5278.80 5279.45 ... 64850 2010-01-05 09:16:00
4 2010-01-06 12:16:00 5277.95 5278.00 ... 65251 2010-01-05 12:16:00