Dans pandas, vous pouvez calculer la somme cumulรฉe et le produit ร l’aide des mรฉthodes ๐โ๐ฎโ๐ฆโ๐ฌโ๐ฎโ๐ฆโ() et ๐โ๐ฎโ๐ฆโ๐ฉโ๐ซโ๐จโ๐โ() pour ๐๐ซ๐ข๐๐ฌ โโโโ.
- pandas.DataFrame.cumsum โ documentation de pandas 1.5.3
- pandas.DataFrame.cumprod โ documentation de pandas 1.5.3
De plus, les mรฉthodes ๐โ๐ฎโ๐ฆโ๐ฆโ๐โ๐ฑโ() et ๐โ๐ฎโ๐ฆโ๐ฆ๐ขโ๐งโ() sont disponibles pour calculer le maximum et le minimum cumulรฉs.
- pandas.DataFrame.cummax โ documentation de pandas 1.5.3
- pandas.DataFrame.cummin โ documentation de pandas 1.5.3
Cet article couvre les sujets suivants :
- Somme cumulรฉe et produit : ๐โ๐ฎโ๐ฆโ๐ฌโ๐ฎโ๐ฆโ() , ๐โ๐ฎโ๐ฆโ๐ฉโ๐ซโ๐จโ๐โ()
- Utilisation de la base
- Gestion des valeurs manquantes ( N๐โN ) : ๐ฌโ๐คโ๐ขโ๐ฉโ๐งโ๐โ
- Cumulรฉs maximum et minimum : ๐โ๐ฎโ๐ฆโ๐ฆโ๐โ๐ฑโ() , ๐โ๐ฎโ๐ฆโ๐ฆโ๐ขโ๐งโ()
Vous pouvez รฉgalement utiliser la bibliothรจque standard Python itertools et les fonctions/mรฉthodes NumPy pour calculer la somme et le produit cumulรฉs. Avec itertools, vous pouvez appliquer n’importe quelle fonction de maniรจre cumulative.
- Calculer la somme et le produit cumulรฉs en Python (itertools.accumulate)
- NumPy : Calculer la somme cumulรฉe et le produit (np.cumsum, np.cumprod)
Somme cumulรฉe et produit : ๐โ๐ฎโ๐ฆโ๐ฌโ๐ฎโ๐ฆโ() , ๐โ๐ฎโ๐ฆโ๐ฉโ๐ซโ๐จโ๐โ()
Utilisation de la base
Considรฉrez l’exemple suivant ๐ฉโ๐โ๐งโ๐โ๐โ๐ฌโ.D๐โ๐ญโ๐โF๐ซโ๐โ๐ฆโ๐โ :
import pandas as pd print(pd.__version__) # 1.0.5 df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]}, index=['X', 'Y', 'Z']) print(df) # A B # X 1 4 # Y 2 5 # Z 3 6
Par dรฉfaut, ๐โ๐ฎโ๐ฆโ๐ฌโ๐ฎโ๐ฆโ() et ๐โ๐ฎโ๐ฆโ๐ฉโ๐ซโ๐จโ๐โ() calculent la somme cumulรฉe et le produit par colonne. Pour effectuer des calculs par ligne, dรฉfinissant l’argument ๐โ๐ฑโ๐ขโ๐ฌโ sur 1 .
print(df.cumsum()) # A B # X 1 4 # Y 3 9 # Z 6 15 print(df.cumsum(axis=1)) # A B # X 1 5 # Y 2 7 # Z 3 9
print(df.cumprod()) # A B # X 1 4 # Y 2 20 # Z 6 120 print(df.cumprod(axis=1)) # A B # X 1 4 # Y 2 10 # Z 3 18
๐ฉโ๐โ๐งโ๐โ๐โ๐ฌโ.S๐โ๐ซโ๐ขโ๐โ๐ฌโfournit รฉgalement les mรฉthodes ๐โ๐ฎโ๐ฆโ๐ฌโ๐ฎโ๐ฆโ() et ๐โ๐ฎโ๐ฆโ๐ฉโ๐ซโ๐จโ๐โ() .
print(df['B']) # X 4 # Y 5 # Z 6 # Name: B, dtype: int64 print(type(df['B'])) # <class 'pandas.core.series.Series'> print(df['B'].cumsum()) # X 4 # Y 9 # Z 15 # Name: B, dtype: int64 print(df['B'].cumprod()) # X 4 # Y 20 # Z 120 # Name: B, dtype: int64
Gestion des valeurs manquantes ( N๐โN ) : ๐ฌโ๐คโ๐ขโ๐ฉโ๐งโ๐โ
Considรฉrons un ๐ฉโ๐โ๐งโ๐โ๐โ๐ฌโ.D๐โ๐ญโ๐โF๐ซโ๐โ๐ฆโ๐โ contenant des valeurs manquantes ( N๐โN ) :
df_nan = pd.DataFrame({'A': [1, 2, 3], 'B': [4, float('nan'), 6]}, index=['X', 'Y', 'Z']) print(df_nan) # A B # X 1 4.0 # Y 2 NaN # Z 3 6.0
Par dรฉfaut, les valeurs manquantes ( N๐โN ) sont ignorรฉes.
print(df_nan.cumsum()) # A B # X 1 4.0 # Y 3 NaN # Z 6 10.0
Si vous dรฉfinissez l’argument ๐ฌโ๐คโ๐ขโ๐ฉโ๐งโ๐โ sur F๐โ๐ฅโ๐ฌโ๐โ , les valeurs manquantes ( N๐โN ) sont รฉgalement utilisรฉes. รtant donnรฉ que les opรฉrations arithmรฉtiques avec N๐โN donnent N๐โN , tous les รฉlรฉments suivants un N๐โN deviennent N๐โN .
print(float('nan') + 4) # nan print(df_nan.cumsum(skipna=False)) # A B # X 1 4.0 # Y 3 NaN # Z 6 NaN
Ceci s’applique รฉgalement ร ๐โ๐ฎโ๐ฆโ๐ฉโ๐ซโ๐จโ๐โ() .
print(df_nan.cumprod()) # A B # X 1 4.0 # Y 2 NaN # Z 6 24.0 print(df_nan.cumprod(skipna=False)) # A B # X 1 4.0 # Y 2 NaN # Z 6 NaN
Le mรชme comportement est observรฉ pour ๐ฉโ๐โ๐งโ๐โ๐โ๐ฌโ.S๐โ๐ซโ๐ขโ๐โ๐ฌโ , mais les exemples ne sont pas prรฉsentรฉs ici par souci de concision.
Cumulรฉs maximum et minimum : ๐โ๐ฎโ๐ฆโ๐ฆโ๐โ๐ฑโ() , ๐โ๐ฎโ๐ฆโ๐ฆโ๐ขโ๐งโ()
Il existe รฉgalement les mรฉthodes ๐โ๐ฎโ๐ฆโ๐ฆโ๐โ๐ฑโ() et ๐โ๐ฎโ๐ฆโ๐ฆ๐ขโ๐งโ() pour calculer les valeurs maximales et minimales cumulรฉes. Elles sont utiles, par exemple, pour calculer la valeur maximale ou minimale jusqu’ร un certain point dans les donnรฉes de sรฉries chronologiques.
L’utilisation est la mรชme que pour ๐โ๐ฎโ๐ฆโ๐ฌโ๐ฎโ๐ฆโ() et ๐โ๐ฎโ๐ฆโ๐ฉโ๐ซโ๐จโ๐โ() . Les calculs sont effectuรฉs par colonne par dรฉfaut et par ligne si ๐โ๐ฑโ๐ขโ๐ฌโ=1 .
df2 = pd.DataFrame({'A': [1, 4, 2], 'B': [6, 3, 5]}, index=['X', 'Y', 'Z']) print(df2) # A B # X 1 6 # Y 4 3 # Z 2 5 print(df2.cummax()) # A B # X 1 6 # Y 4 6 # Z 4 6 print(df2.cummax(axis=1)) # A B # X 1 6 # Y 4 4 # Z 2 5 print(df2.cummin()) # A B # X 1 6 # Y 1 3 # Z 1 3 print(df2.cummin(axis=1)) # A B # X 1 1 # Y 4 3 # Z 2 2
La gestion des valeurs manquantes ( N๐โN ) est รฉgalement la mรชme que pour ๐โ๐ฎโ๐ฆโ๐ฌโ๐ฎโ๐ฆโ() et ๐โ๐ฎโ๐ฆโ๐ฉโ๐ซโ๐จโ๐โ() , et l’argument ๐ฌโ๐คโ๐ขโ๐ฉโ๐งโ๐โ peut รชtre spรฉcifiรฉ.
df2_nan = pd.DataFrame({'A': [1, 4, 2], 'B': [6, float('nan'), 5]}, index=['X', 'Y', 'Z']) print(df2_nan) # A B # X 1 6.0 # Y 4 NaN # Z 2 5.0 print(df2_nan.cummax()) # A B # X 1 6.0 # Y 4 NaN # Z 4 6.0 print(df2_nan.cummax(skipna=False)) # A B # X 1 6.0 # Y 4 NaN # Z 4 NaN print(df2_nan.cummin()) # A B # X 1 6.0 # Y 1 NaN # Z 1 5.0 print(df2_nan.cummin(skipna=False)) # A B # X 1 6.0 # Y 1 NaN # Z 1 NaN
๐ฉโ๐โ๐งโ๐โ๐โ๐ฌโ.S๐โ๐ซโ๐ขโ๐โ๐ฌโ prend รฉgalement en charge les mรฉthodes ๐โ๐ฎโ๐ฆโ๐ฆโ๐โ๐ฑโ() et ๐โ๐ฎโ๐ฆโ๐ฆโ๐ขโ๐งโ() , mais les exemples sont omis par souci de concision.
