Neuling in der Analytik mit Python, seien Sie also bitte vorsichtig :-) Ich konnte keine Antwort auf diese Frage finden - entschuldige mich, wenn sie bereits an anderer Stelle in einem anderen Format beantwortet wurde.
Ich habe einen Datensatz mit Transaktionsdaten für ein Einzelhandelsgeschäft. Variablen zusammen mit Erklärung sind:
- Abschnitt: der Abschnitt des Geschäfts, eine str;
- Produktname: Name des Produkts, a str;
- Quittung: die Nummer der Rechnung, ein int;
- Kassierer, die Nummer des Kassierers, ein int;
- Kosten: die Kosten des Artikels, ein Schwimmer;
- Datum, im Format MM / TT / JJ, a str;
- Zeit im Format HH: MM: SS, a str;
Der Beleg hat für alle in einer einzelnen Transaktion gekauften Produkte den gleichen Wert. Daher kann er verwendet werden, um die durchschnittliche Anzahl der in einer einzelnen Transaktion getätigten Käufe zu bestimmen.
Was ist der beste Weg, um dies zu erreichen? Ich möchte im Wesentlichen verwenden groupby()
, um die Belegvariable nach ihren eigenen identischen Vorkommen zu gruppieren, damit ich ein Histogramm erstellen kann.
Arbeiten mit den Daten in einem Pandas DataFrame.
BEARBEITEN:
Hier sind einige Beispieldaten mit Header (prod_name ist eigentlich eine Hex-Zahl):
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
Von diesem Beispielsatz würde ich ein Histogramm des Belegs erwarten, das zwei Vorkommen des Belegs 102857 (da diese Person zwei Artikel in einer Transaktion gekauft hat) bzw. einen Vorkommen des Belegs 102856 und des Belegs 102858 zeigt. Hinweis: Mein Datensatz ist ungefähr nicht riesig 1 Million Zeilen.
quelle
Antworten:
Dann wollen Sie:
quelle
s[s>1]
, wos=df.groupby('receipt').receipt.count()
Ich stelle einige Tutorials zum Thema Daten-Wrangling zusammen. Vielleicht hilft mein Jupyter-Notizbuch auf Github. Ich denke, dass es der Schlüssel ist, die Linie zu modifizieren:
sein:
Um nach mehreren Variablen zu gruppieren, sollte dies funktionieren:
quelle
df.groupby('reciept')['date'].count()
gibt das gleiche Ergebnis wiedf.groupby('reciept')['prod_name'].count()
Soweit ich verstehen kann, benötigen Sie ein Histogramm Ihrer Quittungsnummer. Sie können so etwas versuchen
import pandas as pd data = np.read_csv("your_file_path.csv") data.groupby(["receipt"])receipt.count().sort_values(ascending=False).head(20).plot.bar()
Auf diese Weise erhalten Sie Balkendiagramme mit den meisten sich wiederholenden Abrechnungsnummern (20 mit den meisten Wiederholungen). Ändern Sie die Zahl in der Kopffunktion, um mehr oder weniger zu erhalten.
quelle