Początkujący w analityce za pomocą Pythona, więc proszę, bądź łagodny :-) Nie mogłem znaleźć odpowiedzi na to pytanie - przepraszam, jeśli jest już dostępna odpowiedź w innym formacie.
Mam zestaw danych danych transakcji dla punktu sprzedaży detalicznej. Zmienne wraz z wyjaśnieniem to:
- sekcja: sekcja sklepu, str;
- nazwa_produktu: nazwa produktu, str;
- odbiór: numer faktury, int;
- kasjer, numer kasjera, int;
- koszt: koszt przedmiotu, liczba zmiennoprzecinkowa;
- data, w formacie MM / DD / RR, str;
- czas, w formacie GG: MM: SS, str;
Paragon ma tę samą wartość dla wszystkich produktów zakupionych w jednej transakcji, dlatego można go użyć do ustalenia średniej liczby zakupów dokonanych w jednej transakcji.
Jak najlepiej to zrobić? Zasadniczo chcę użyć groupby()
do zgrupowania zmiennej pokwitowania według jej identycznych wystąpień, aby móc utworzyć histogram.
Praca z danymi w pandach DataFrame.
EDYTOWAĆ:
Oto kilka przykładowych danych z nagłówkiem (nazwa_produktu to tak naprawdę liczba szesnastkowa):
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
Z tego przykładowego zestawu oczekiwałbym histogramu pokwitowania, który pokazuje dwa wystąpienia pokwitowania 102857 (ponieważ ta osoba kupiła dwa przedmioty w jednej transakcji) i jedno wystąpienie odpowiednio pokwitowania 102856 i pokwitowania 102858. Uwaga: mój zestaw danych nie jest ogromny, około 1 milion wierszy.
źródło
Odpowiedzi:
Więc chcesz:
źródło
s[s>1]
, gdzies=df.groupby('receipt').receipt.count()
Przygotowuję tutoriale dotyczące przekłamywania danych. Może mój notatnik jupyter na githubie pomoże. Myślę, że kluczem jest zmiana linii:
być:
Aby pogrupować według wielu zmiennych, powinno to działać:
źródło
df.groupby('reciept')['date'].count()
daje taki sam wynik jakdf.groupby('reciept')['prod_name'].count()
Z tego, co rozumiem, potrzebuję histogramu paragonu nr. Możesz spróbować czegoś takiego
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()
To da Ci wykresy słupkowe z najczęściej powtarzającymi się numerami rozliczeniowymi (20 najczęściej powtarzających się). Zmień liczbę w funkcji głowy, aby uzyskać więcej lub mniej.
źródło