Iniciante no analytics com Python, por favor, seja gentil :-) Não consegui encontrar a resposta para esta pergunta - desculpe se ela já foi respondida em outro lugar em um formato diferente.
Eu tenho um conjunto de dados de dados de transação para um ponto de venda. Variáveis junto com a explicação são:
- seção: a seção da loja, um str;
- nome_do_produto: nome do produto, um str;
- recibo: o número da fatura, um int;
- caixa, o número da caixa, um int;
- custo: o custo do item, um flutuador;
- data, no formato MM / DD / AA, um str;
- hora, no formato HH: MM: SS, a str;
O recebimento tem o mesmo valor para todos os produtos comprados em uma única transação, portanto, pode ser usado para determinar o número médio de compras feitas em uma única transação.
Qual é a melhor maneira de fazer isso? Eu essencialmente quero usar groupby()
para agrupar a variável de recebimento por suas próprias ocorrências idênticas, para que eu possa criar um histograma.
Trabalhando com os dados em um DataFrame do pandas.
EDITAR:
Aqui estão alguns dados de amostra com cabeçalho (nome_produto é realmente um 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
Deste conjunto de amostras, esperaria um histograma de recebimento que mostre duas ocorrências do recebimento 102857 (desde que a pessoa comprou dois itens em uma transação) e uma ocorrência, respectivamente, do recebimento 102856 e do recebimento 102858. Nota: meu conjunto de dados não é grande, aproximadamente 1 milhão de linhas.
fonte
Respostas:
Então você quer:
fonte
s[s>1]
, ondes=df.groupby('receipt').receipt.count()
Estou montando alguns tutoriais sobre disputa de dados. Talvez o meu notebook jupyter no github ajude. Eu acho que é a chave está modificando a linha:
ser estar:
Para agrupar por várias variáveis, isso deve funcionar:
fonte
df.groupby('reciept')['date'].count()
dá o mesmo resultado quedf.groupby('reciept')['prod_name'].count()
Pelo que entendi, você precisaria de um histograma do seu recibo nº. Você pode tentar algo assim
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()
Isso fornecerá gráficos de barra dos números de cobrança mais repetitivos (20 mais repetidos) Altere o número na função de cabeçalho para obter mais ou menos.
fonte