Disons que j'ai un dataframe comme celui-ci
A B
0 a b
1 c d
2 e f
3 g h
0,1,2,3 sont des moments, a, c, e, g est une série temporelle et b, d, f, h est une autre série temporelle . qui est obtenu en calculant les différences de lignes consécutives pour certaines colonnes.
Donc j'ai besoin de quelque chose comme ça
A B dA
0 a b (a-c)
1 c d (c-e)
2 e f (e-g)
3 g h Nan
J'ai vu quelque chose appelé diff sur le dataframe/series mais cela le fait légèrement différemment car dans le premier élément deviendra Nan.
Utilisez shift .
df['dA'] = df['A'] - df['A'].shift(-1)
Vous pouvez utiliser diff
et transmettre -1
comme argument periods
:
>>> df = pd.DataFrame({"A": [9, 4, 2, 1], "B": [12, 7, 5, 4]})
>>> df["dA"] = df["A"].diff(-1)
>>> df
A B dA
0 9 12 5
1 4 7 2
2 2 5 1
3 1 4 NaN
[4 rows x 3 columns]
Lorsque vous utilisez des données au format CSV, cela fonctionnerait parfaitement:
my_data = pd.read_csv('sale_data.csv')
df = pd.DataFrame(my_data)
df['New_column'] = df['target_column'].diff(1)
print(df) #for the console but not necessary
Les différences glissantes peuvent également être calculées de cette façon:
df=pd.DataFrame(my_data)
my_data = pd.read_csv('sales_data.csv')
i=0
j=1
while j < len(df['Target_column']):
j=df['Target_column'][i+1] - df['Target_column'][i] #the difference btwn two values in a column.
i+=1 #move to the next value in the column.
j+=1 #next value in the new column.
print(j)