Novato a la analítica con Python, así que por favor sea amable :-) No pude encontrar la respuesta a esta pregunta, disculpas si ya está respondida en otro lugar en un formato diferente.
Tengo un conjunto de datos de transacciones para una tienda minorista. Las variables junto con la explicación son:
- sección: la sección de la tienda, un str;
- prod_name: nombre del producto, un str;
- recibo: el número de la factura, un int;
- cajero, el número del cajero, un int;
- costo: el costo del artículo, un flotador;
- fecha, en formato MM / DD / AA, un str;
- tiempo, en formato HH: MM: SS, un str;
El recibo tiene el mismo valor para todos los productos comprados en una sola transacción, por lo tanto, puede usarse para determinar el número promedio de compras realizadas en una sola transacción.
¿Cuál es la mejor manera de hacer esto? Esencialmente quiero usar groupby()
para agrupar la variable de recibo por sus propias ocurrencias idénticas para que pueda crear un histograma.
Trabajando con los datos en un pandas DataFrame.
EDITAR:
Aquí hay algunos datos de muestra con encabezado (prod_name es en realidad un número hexadecimal):
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
De este conjunto de muestra, esperaría un histograma de recibo que muestre dos ocurrencias del recibo 102857 (ya que esa persona compró dos artículos en una transacción) y una ocurrencia respectivamente del recibo 102856 y del recibo 102858. Nota: mi conjunto de datos no es enorme, aproximadamente 1 millón de filas
fuente
Respuestas:
Entonces quieres:
fuente
s[s>1]
, dondes=df.groupby('receipt').receipt.count()
Estoy preparando algunos tutoriales sobre la disputa de datos. Tal vez mi cuaderno jupyter en github ayude. Creo que es la clave está modificando la línea:
ser - estar:
Para agrupar por múltiples variables esto debería funcionar:
fuente
df.groupby('reciept')['date'].count()
da el mismo resultado quedf.groupby('reciept')['prod_name'].count()
Por lo que puedo entender es que necesitaría un histograma de su recibo no. Puedes probar algo como esto
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()
Esto le proporcionará gráficos de barras de la mayoría de los números de facturación repetidos (20 más repetidos) Cambie el número en la función de encabezado para obtener más o menos.
fuente