Débutant en analytique avec Python, alors soyez gentil :-) Je n'ai pas trouvé la réponse à cette question - excuses si elle a déjà été répondue ailleurs dans un format différent.
J'ai un ensemble de données de données de transaction pour un point de vente. Les variables ainsi que l'explication sont:
- section: la section du magasin, une str;
- prod_name: nom du produit, une chaîne;
- reçu: le numéro de la facture, un int;
- caissier, le numéro du caissier, un int;
- coût: le coût de l'article, un flotteur;
- date, au format MM / JJ / AA, une chaîne;
- heure, au format HH: MM: SS, une chaîne;
Le reçu a la même valeur pour tous les produits achetés en une seule transaction, il peut donc être utilisé pour déterminer le nombre moyen d'achats effectués en une seule transaction.
Quelle est la meilleure manière de s'occuper de ça? Je veux essentiellement utiliser groupby()
pour regrouper la variable de réception par ses propres occurrences identiques afin de pouvoir créer un histogramme.
Utilisation des données dans un DataFrame pandas.
ÉDITER:
Voici quelques exemples de données avec en-tête (prod_name est en fait un nombre hexadécimal):
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
À partir de cet échantillon, je m'attendrais à un histogramme de réception qui montre deux occurrences de la réception 102857 (puisque cette personne a acheté deux articles en une transaction) et une occurrence respectivement de la réception 102856 et de la réception 102858. Remarque: mon ensemble de données n'est pas énorme, environ 1 million de lignes.
la source
Réponses:
Alors tu veux:
la source
s[s>1]
, oùs=df.groupby('receipt').receipt.count()
Je prépare des didacticiels sur la lutte contre les données. Peut-être que mon cahier jupyter sur github vous aidera. Je pense que c'est la clé qui modifie la ligne:
être:
Pour regrouper par plusieurs variables, cela devrait fonctionner:
la source
df.groupby('reciept')['date'].count()
donne le même résultat quedf.groupby('reciept')['prod_name'].count()
D'après ce que je peux comprendre, vous auriez besoin d'un histogramme de votre reçu non. Vous pouvez essayer quelque chose comme ça
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()
Cela vous donnera des graphiques à barres de la plupart des numéros de facturation répétitifs (20 plus répétitifs). Modifiez le nombre dans la fonction de tête pour obtenir plus ou moins.
la source