Pemula analitik dengan Python jadi harap bersikap lembut :-) Saya tidak dapat menemukan jawaban untuk pertanyaan ini - permintaan maaf jika sudah dijawab di tempat lain dalam format yang berbeda.
Saya memiliki dataset data transaksi untuk outlet ritel. Variabel beserta penjelasannya adalah:
- bagian: bagian toko, str;
- prod_name: nama produk, str;
- tanda terima: jumlah faktur, int;
- kasir, jumlah kasir, int;
- biaya: biaya barang, pelampung;
- tanggal, dalam format MM / DD / YY, str;
- waktu, dalam format HH: MM: SS, str;
Kwitansi memiliki nilai yang sama untuk semua produk yang dibeli dalam satu transaksi, sehingga dapat digunakan untuk menentukan jumlah rata-rata pembelian yang dilakukan dalam satu transaksi.
Apa cara terbaik untuk masalah ini? Saya pada dasarnya ingin menggunakan groupby()
untuk mengelompokkan variabel penerimaan dengan kejadian identik sendiri sehingga saya dapat membuat histogram.
Bekerja dengan data dalam panda DataFrame.
EDIT:
Berikut adalah beberapa contoh data dengan header (prod_name sebenarnya adalah nomor hex):
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
Dari set sampel ini saya akan mengharapkan histogram tanda terima yang menunjukkan dua kejadian penerimaan 102857 (karena orang itu membeli dua item dalam satu transaksi) dan satu kejadian masing-masing penerimaan 102856 dan penerimaan 102858. Catatan: dataset saya tidak besar, sekitar 1 juta baris.
sumber
Jawaban:
Maka Anda ingin:
sumber
s[s>1]
, di manas=df.groupby('receipt').receipt.count()
Saya menyusun beberapa tutorial seputar pertengkaran data. Mungkin notebook jupyter saya di github akan membantu. Saya pikir kuncinya adalah memodifikasi garis:
menjadi:
Untuk mengelompokkan berdasarkan beberapa variabel ini harus berfungsi:
sumber
df.groupby('reciept')['date'].count()
memberikan hasil yang sama dengandf.groupby('reciept')['prod_name'].count()
Dari apa yang saya mengerti adalah bahwa Anda akan memerlukan histogram tanda terima Anda. Anda dapat mencoba sesuatu seperti ini
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()
Ini akan memberi Anda plot bar nomor penagihan paling berulang (20 paling berulang) Ubah angka di fungsi kepala untuk mendapatkan lebih atau kurang.
sumber