Wie man identische Werte gruppiert und ihre Häufigkeit in Python zählt?
-
16-10-2019 - |
Frage
Neuling zu Analytics mit Python Also bitte sei sanft :-) Ich konnte die Antwort auf diese Frage nicht finden - Entschuldigung, wenn sie bereits an anderer Stelle in einem anderen Format beantwortet wird.
Ich habe einen Datensatz von Transaktionsdaten für ein Einzelhandelsgeschäft. Variablen zusammen mit Erklärung sind:
- Abschnitt: Der Abschnitt des Ladens, a str;
- prod_name: Name des Produkts, a str;
- Quittung: Die Nummer der Rechnung, ein int;
- Kassierer, die Anzahl der Kassierer, ein int;
- Kosten: Die Kosten des Artikels, ein Schwimmer;
- Datum, im Format MM/DD/YY, a str;
- Zeit, im Format HH: mm: ss, a str;
Der Quittung hat den gleichen Wert für alle in einer einzelnen Transaktion gekauften Produkte. Daher kann sie verwendet werden, um die durchschnittliche Anzahl der in einer einzelnen Transaktion getätigten Einkäufe zu bestimmen.
Was ist der beste Weg, um das zu tun? Ich möchte im Wesentlichen verwenden groupby()
So gruppieren Sie die Quittungsvariable nach eigenen identischen Ereignissen, damit ich ein Histogramm erstellen kann.
Arbeiten mit den Daten in einem Pandas -Datenframe.
BEARBEITEN:
Hier sind einige Beispieldaten mit Header (prod_name ist eigentlich eine Hex -Nummer):
section,prod_name,receipt,cashier,cost,date,time
electronics,b46f23e7,102856,5,70.50,05/20/15,9:08:20
womenswear,74558d0d,102857,8,20.00,05/20/15,9:12:46
womenswear,031f36b7,102857,8,30.00,05/20/15,9:12:47
menswear,1d52cd9d,102858,3,65.00,05/20/15,9:08:20
Aus diesem Beispielsatz würde ich ein Histogramm der Quittung erwarten, das zwei Ereignisse des Empfangs 102857 (da diese Person zwei Artikel in einer Transaktion gekauft hat) bzw. ein Ereignis des Empfangs 102856 bzw. des Empfangs 102858. Hinweis: Mein Datensatz ist nicht riesig, um 1 Million Zeilen.
Lösung
Aus diesem Stichprobensatz würde ich ein Histogramm der Quittung erwarten, das zwei Ereignisse des Empfangs 102857 (da diese Person zwei Artikel in einer Transaktion gekauft hat) bzw. ein Ereignis des Eingangs von 102856 bzw. von Quittung 102858.
Dann willst du:
DF.Groupby ('Quittung'). Quittung.Count ()
receipt
102856 1
102857 2
102858 1
Name: receipt, dtype: int64
Andere Tipps
Ich stelle einige Tutorials rund um Data Wrangling zusammen. Vielleicht mein Jupyter Notebook Auf GitHub hilft. Ich denke, es ist der Schlüssel, die Zeile zu ändern:
df.groupby('male')['age'].mean()
sein:
df.groupby('reciept')['prod_name'].count()
Um nach mehreren Variablen zu gruppieren, sollte dies funktionieren:
df.groupby(['reciept','date'])['reciept'].count()