Wie implementieren Sie genaue Zählungen oder Beträge, wenn Sie unterschiedliche Anzahl von Wochentagen haben?

datascience.stackexchange https://datascience.stackexchange.com/questions/11407

  •  16-10-2019
  •  | 
  •  

Frage

Ich habe einen Datensatz von Transaktionsdaten für ein Einzelhandelsgeschäft. Ich benutze Pandas und möchte die Einnahmen bis zum Wochentag analysieren, aber es gibt ungleiche Tage im Datensatz (dh ein zusätzliches Wochenende). Ich habe benutzt df.dt.dayofweek Um einen Ganzzahlwert für den Wochentag zu erstellen, und die Daten nach diesem Ganzzahlwert mithilfe der Gründung gruppiert df.groupby(["Day_int",]).sum()

Daher habe ich am Ende eine "Gesamt" -Spalne Tage Samstag und Sonntag. Ist der beste Weg, um den Datenrahmen zu durchlaufen oder ist es besser

Hier ist der DF, mit dem ich arbeite (die meisten Säulenwerte sind unsinnig, nur Gesamt ist von Interesse). Day_int ist die variable gruppe_by und sollte niedriger erscheinen als die anderen Spalten.

Day_int Section Prod_name Cashier Date Time Receipt Total
0 ..................................................91341
1 ..................................................82262
2 ..................................................84145
3 ..................................................90115
4 ..................................................115497
5 ..................................................151971
6 ..................................................109210
War es hilfreich?

Lösung

Ich würde eine Kolumne hinzufügen, die 3 ist, wenn es sich um einen Wochentag und eine 4 handelt, wenn sie kein Antrag verwendet, so etwas wie folgt:

df['divide_by'] = df.apply(lambda x: 3 if x['Day_int']<5 else 4, axis=1)

Angenommen, die Tage sind Montag 0 bis Sonntag. 6. Dann können Sie die Kolumne wie folgt hinzufügen:

df['adj_total'] = df.apply(lambda x: x['Total']/x['divide_by'], axis=1)

Dann können Sie die Spalte Divide_by entfernen und das Ergebnis haben

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit datascience.stackexchange
scroll top