Domanda

Newbie di analisi con Python quindi si prega di essere gentile :-) non riuscivo a trovare la risposta a questa domanda -. Scuse se è già una risposta altrove in un formato diverso

Ho un set di dati dei dati delle transazioni per un punto vendita. Le variabili insieme con spiegazioni sono:

  • sezione: la sezione del negozio, una str;
  • PROD_NAME: nome del prodotto, una str;
  • Data: il numero della fattura, un int;
  • cassiere, il numero di cassa, un int;
  • Costo: il costo del prodotto, un galleggiante;
  • data, in formato MM / DD / YY, una str;
  • ora, in formato HH: MM: SS, una str;

Ricevuta ha lo stesso valore per tutti i prodotti acquistati in un'unica operazione, quindi può essere utilizzato per determinare il numero medio di acquisti effettuati in una singola transazione.

Qual è il modo migliore per andare su questo? Io essenzialmente voglio usare groupby() al gruppo variabile di ricezione da parte le proprie occorrenze identici in modo che possa creare un istogramma.

Lavorare con i dati in un panda dataframe.

Modifica

Ecco alcuni dati di esempio con intestazione (PROD_NAME è in realtà un numero esadecimale):

 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 

Da questo campione impostata mi aspetterei un istogramma di ricevuta che mostra due occorrenze di ricezione 102857 (dal momento che la persona ha acquistato due elementi in un'unica transazione) e una comparsa, rispettivamente, di ricevimento e 102856 di ricevimento 102858. Nota: il mio set di dati non è enorme, di circa 1 milione di righe.

È stato utile?

Soluzione

Da questo campione impostata mi aspetterei un istogramma di ricevuta che spettacoli due occorrenze di ricezione 102857 (dal momento che la persona ha acquistato due articoli in una transazione) e un'occorrenza rispettivamente di ricezione 102856 e di ricezione 102858.

Poi si vuole:

df.groupby ( 'ricezione'). Receipt.count ()

receipt
102856    1
102857    2
102858    1
Name: receipt, dtype: int64

Altri suggerimenti

Sto mettendo insieme alcuni tutorial intorno dispute dati. Forse il mio jupyter notebook su github aiuterà. Credo che sia la chiave sta modificando la riga:

df.groupby('male')['age'].mean()

di essere:

df.groupby('reciept')['prod_name'].count()

Per gruppo da più variabili questo dovrebbe funzionare:

df.groupby(['reciept','date'])['reciept'].count()
Autorizzato sotto: CC-BY-SA insieme a attribuzione
scroll top