J'utilise Python3.5 et je travaille avec des pandas. J'ai chargé les données boursières de Yahoo Finance et j'ai enregistré les fichiers au format CSV. Mes DataFrames chargent ces données depuis le csv. Ceci est une copie des dix lignes du fichier csv qui est mon DataFrame
Date Open High Low Close Volume Adj Close
1990-04-12 26.875000 26.875000 26.625 26.625 6100 250.576036
1990-04-16 26.500000 26.750000 26.375 26.750 500 251.752449
1990-04-17 26.750000 26.875000 26.750 26.875 2300 252.928863
1990-04-18 26.875000 26.875000 26.500 26.625 3500 250.576036
1990-04-19 26.500000 26.750000 26.500 26.750 700 251.752449
1990-04-20 26.750000 26.875000 26.750 26.875 2100 252.928863
1990-04-23 26.875000 26.875000 26.750 26.875 700 252.928863
1990-04-24 27.000000 27.000000 26.000 26.000 2400 244.693970
1990-04-25 25.250000 25.250000 24.875 25.125 9300 236.459076
1990-04-26 25.000000 25.250000 24.750 25.000 1200 235.282663
Je sais que je peux utiliser iloc, loc, ix mais ces valeurs que j'indexe ne donneront que mes lignes et colonnes spécifiques et n'effectueront pas l'opération sur chaque ligne. Par exemple: la ligne une des données de la colonne ouverte a une valeur de 26,875 et la ligne en dessous a 26,50. Le prix a chuté de .375 cents. Je veux pouvoir capturer le% d'augmentation ou de diminution de la veille, donc pour terminer cet exemple .375 divisé par 26.875 = diminution de 1,4% d'un jour à l'autre. Je veux pouvoir exécuter ce calcul sur chaque ligne, donc je sais combien il a augmenté ou diminué par rapport à la veille. Les fonctions d'index que j'ai essayées mais elles sont absolues, et je ne veux pas utiliser de boucle. Existe-t-il un moyen de le faire avec la fonction ix, iloc, loc ou une autre fonction?
vous pouvez utiliser les méthodes pct_change () ou/et diff ()
Démo:
In [138]: df.Close.pct_change() * 100
Out[138]:
0 NaN
1 0.469484
2 0.467290
3 -0.930233
4 0.469484
5 0.467290
6 0.000000
7 -3.255814
8 -3.365385
9 -0.497512
Name: Close, dtype: float64
In [139]: df.Close.diff()
Out[139]:
0 NaN
1 0.125
2 0.125
3 -0.250
4 0.125
5 0.125
6 0.000
7 -0.875
8 -0.875
9 -0.125
Name: Close, dtype: float64
Les solutions MaxU conviennent à votre cas. Si vous souhaitez effectuer des calculs plus complexes sur la base de vos lignes précédentes, vous devez utiliser shift