2016-07-20 21 views
1

Ich möchte zwei verschiedene Berechnungen über aufeinanderfolgende Spalten in einem Pandas- oder Pyspark-Dataframe durchführen.Tatsächliche und prozentuale Differenz in aufeinanderfolgenden Spalten in einem Pandas- oder Pyspark-Dataframe

Spalten sind Wochen und die Metriken werden als Zeilen angezeigt. Ich möchte die tatsächlichen und prozentualen Unterschiede über die Spalten berechnen.

Die Eingangs-/Ausgangstabellen inkl. Die in Excel verwendeten Berechnungen werden in der folgenden Abbildung angezeigt. Ich möchte diese Berechnungen auf einem Pandas oder Pyspark-Datenrahmen replizieren.

enter image description here

Rohdaten angebaute:

Metrics   Week20 Week21 Week22 Week23 Week24 Week25 Week26 Week27 
Sales   20301 21132 20059 23062 19610 22734 22140 20699 
TRXs   739  729  690  779  701  736  762  655 
Attachment Rate 4.47 4.44 4.28 4.56 4.41 4.58 4.55 4.96 
AOV    27.47 28.99 29.07 29.6 27.97 30.89 29.06 31.6 
Profit   5177 5389 5115 5881 5001 5797 5646 5278 
Profit per TRX 7.01 7.39 7.41 7.55 7.13 7.88 7.41 8.06 
+0

Idealfall sollten Sie Rohdaten und Code anstatt Bilder enthalten müssen – EdChum

Antwort

1

in Pandas Sie pct_change(axis=1) und diff(axis=1) Methoden verwenden:

df = df.set_index('Metrics') 

# list of metrics with "actual diff" 
actual = ['AOV', 'Attachment Rate'] 

rep = (df[~df.index.isin(actual)].pct_change(axis=1).round(2)*100).fillna(0).astype(str).add('%') 
rep = pd.concat([rep, 
       df[df.index.isin(actual)].diff(axis=1).fillna(0) 
       ]) 


In [131]: rep 
Out[131]: 
       Week20 Week21 Week22 Week23 Week24 Week25 Week26 Week27 
Metrics 
Sales    0.0% 4.0% -5.0% 15.0% -15.0% 16.0% -3.0% -7.0% 
TRXs    0.0% -1.0% -5.0% 13.0% -10.0% 5.0% 4.0% -14.0% 
Profit   0.0% 4.0% -5.0% 15.0% -15.0% 16.0% -3.0% -7.0% 
Profit per TRX 0.0% 5.0% 0.0% 2.0% -6.0% 11.0% -6.0% 9.0% 
Attachment Rate  0 -0.03 -0.16 0.28 -0.15 0.17 -0.03 0.41 
AOV     0 1.52 0.08 0.53 -1.63 2.92 -1.83 2.54 
+0

MaxU im Datenframe Ich möchte zwei Berechnungen, nicht nur die prozentuale Änderung. Zum Beispiel für Sales, TRXs und Profit ich will% ändern, während auf den anderen Zeilen ich möchte tatsächliche Änderung – Demis

+0

@Demis, bitte geben Sie ein Beispiel und gewünschte Datensätze in __text/CSV/TSV__ Formular – MaxU

+0

wirklich nette Formel ... es hat gut funktioniert auf meinen Daten. – Demis