[PYTHON] Data Science 100 Knock ~ Bataille pour moins que les débutants part6

C'est un record de lutte pour frapper 100 œufs sans connaître l'œuf du scientifique des données. C'est un mystère si je peux terminer la course. ~~ Même s'il disparaît en cours de route, pensez qu'il n'est pas donné à Qiita. ~~

100 articles frappants 100 Knock Guide

** Faites attention si vous essayez de le faire car cela inclut des spoilers **

Le lien de la page à laquelle j'ai fait référence en premier a été modifié pour la première fois seulement.

C'est difficile à voir! Cette façon d'écrire est dangereuse! Si vous avez des questions, n'hésitez pas à me le faire savoir. ~~ Je vais l'utiliser comme nourriture tout en souffrant de dommages à mon cœur.

Cette solution est fausse! Cette interprétation est différente! Veuillez commenter si vous en avez.

Cette fois de 33 à 35. [Dernière fois] 29-32 [Première fois avec la table des matières]

33e

P-033: Calculez le montant moyen des ventes (montant) pour chaque code magasin (store_cd) pour la trame de données des détails du reçu (df_receipt), et extrayez 330 ou plus.

mine33.py


df=df_receipt
df=df.groupby('store_cd').agg({'amount':'mean'}).query("amount>=330")
df

'''Le modèle de réponse'''
df_receipt.groupby('store_cd').amount.mean().reset_index().query('amount >= 330')

Des problèmes comme l'examen jusqu'à présent. Spécifiez la plage de données de calcul avec guroupby Ajoutez une ligne d'opération avec agg et Spécifiez la condition avec la requête.

Si vous pensez que c'est juste, la réponse du modèle est .amount.mean () Je vois. Cependant, il semble que cela ne fonctionne pas si vous écrivez les spécifications de colonne en les connectant avec ., alors soyez prudent.

~~ J'ai succombé à la requête ~~ Je pense que ce serait bien de pouvoir utiliser la partie pratique du modèle de réponse en la résumant de cette manière.

34ème

P-034: Pour le bloc de données des détails de réception (df_receipt), additionnez le montant des ventes (montant) pour chaque ID client (customer_id) et calculez la moyenne de tous les clients. Cependant, si l'ID client commence par "Z", il représente un non-membre, excluez-le du calcul.

mine34.py


df=df_receipt
df=df[df['customer_id'].str.contains('^[^Z]')].reset_index()
df.groupby('customer_id').amount.sum().mean()

'''Le modèle de réponse'''
#Comment écrire sans utiliser de requête
df_receipt[~df_receipt['customer_id'].str.startswith("Z")].groupby('customer_id').amount.sum().mean()

#Comment écrire à l'aide d'une requête
df_receipt.query('not customer_id.str.startswith("Z")', engine='python').groupby('customer_id').amount.sum().mean()

Cette fois, c'était une question avec deux modèles de réponses modèles. J'utilise contient et j'utilise commencez par dans la réponse du modèle. Si vous êtes habitué dans une certaine mesure aux expressions régulières, «contient» est plus facile à écrire, mais est-il plus rapide de répondre parce que «startwith» ne regarde que devant?

De plus, j'ai spécifié "autres que ceux qui commencent par Z" dans l'expression régulière, mais les deux modèles de réponses définissent "les choses qui commencent par Z" et sont "autres que cela". Si l'expression régulière est trop longue, il faudra du temps pour la lire, donc si elle est trop longue, je me demande si c'est le cas.

Si vous écrivez ce problème dans SQL

py34.sql


SELECT SUM(amount)/COUNT(DISTINCT customer_id)
FROM receipt
WHERE NOT customer_id LIKE 'Z%'

Je pense que ça va ressembler à

35e

P-035: Pour le bloc de données du relevé de réception (df_receipt), additionnez le montant des ventes (montant) pour chaque ID client (customer_id) pour trouver la moyenne de tous les clients et extraire les clients qui achètent au-dessus de la moyenne. .. Cependant, si l'ID client commence par "Z", il représente un non-membre, excluez-le du calcul. Seules 10 données doivent être affichées.

mine35.py


df=df_receipt
df=df[df['customer_id'].str.contains('^[^Z]')].reset_index()
df=df.groupby('customer_id').amount.sum().reset_index()
df[df['amount'].mean() <= df['amount']].head(10)

'''Le modèle de réponse'''
amount_mean = df_receipt[~df_receipt['customer_id'].str.startswith("Z")].groupby('customer_id').amount.sum().mean()
df_amount_sum = df_receipt.groupby('customer_id').amount.sum().reset_index()
df_amount_sum[df_amount_sum['amount'] >= amount_mean].head(10)

Enfin, le code de la réponse modèle s'allonge. Merci aux deux lettres ~~ df ~~

En écrivant cette fois, j'étais très conscient du calcul effectué sur le champ de données. La réponse du modèle est également divisée en ʻamount_mean et df_amount_sum`.

  1. df=df_receipt
  1. df=df[df['customer_id'].str.contains('^[^Z]')].reset_index() --Recueillir les costomer_ids autres que le premier" Z "
  2. df=df.groupby('customer_id').amount.sum().reset_index() --Calculer «montant» total pour chaque «costomer_id»
  3. df[df['amount'].mean() <= df['amount']].head(10) --Réduire aux données supérieures à la moyenne de 3

Je n'ai pas fait référence à la moyenne sauf pour la comparaison de 4, et je n'aimais pas faire deux dfs, alors j'ai écrit ceci cette fois. Bien sûr, le problème consiste à trouver la moyenne en premier, donc si vous souhaitez utiliser la moyenne dans d'autres processus, cette écriture peut être erronée.

Dans tous les cas, nous comparerons la «moyenne des totaux» et les «totaux», donc nous ferons cette comparaison en 4.

L'occurrence fréquente de ~~ .reset_index () a aussi le sens de la magie ~~

Jusqu'à ici pour cette fois

C'est un peu court car la jointure de table commencera à partir de la prochaine fois et c'est à mi-chemin, donc je vais la casser ici. ~~ Pour cette raison, j'ai gagné même un peu avec des phrases de questions et des modèles de réponses ~~

Recommended Posts

Data Science 100 Knock ~ Bataille pour moins que les débutants part3
Data Science 100 Knock ~ Bataille pour moins que les débutants part6
Data Science 100 Knock ~ Bataille pour moins que les débutants part2
Data Science 100 Knock ~ Bataille pour moins que les débutants part1
Data Science 100 Knock ~ Battle pour moins que les débutants part9
Science des données 100 coups ~ Bataille pour moins que les débutants part7
Data Science 100 Knock ~ Bataille pour moins que les débutants part4
Data Science 100 Knock ~ Bataille pour moins que les débutants part11
Data Science 100 Knock ~ Bataille pour moins que les débutants part5
Data Science 100 Knock ~ Battle pour moins que les débutants part10
Science des données 100 coups ~ Bataille pour moins que les débutants part8
Commentaire sur la science des données à 100 coups (P021 ~ 040)
Commentaire sur la science des données à 100 coups (P061 ~ 080)
Commentaire de la science des données 100 coups (P041 ~ 060)
Commentaire sur la science des données à 100 coups (P081 ~ 100)
Comment mettre en œuvre 100 coups de science des données pour les débutants en science des données (pour Windows 10 Home)
"Data Science 100 Knock (traitement de données structurées)" Explication Python-007
"Data Science 100 Knock (traitement des données structurées)" Explication Python-006
"Data Science 100 Knock (traitement des données structurées)" Explication Python-001
Détection d'anomalies de données chronologiques pour les débutants
"Data Science 100 Knock (traitement des données structurées)" Explication Python-002
[Python] 100 coups sur la science des données (traitement de données structurées) 021 Explication
"Data Science 100 Knock (traitement des données structurées)" Explication Python-005
"Data Science 100 Knock (traitement de données structurées)" Explication Python-004
[Python] 100 coups sur la science des données (traitement de données structurées) 020 Explication
[Python] 100 coups sur la science des données (traitement de données structurées) 025 Explication
"Data Science 100 Knock (traitement des données structurées)" Explication Python-003
[Python] 100 coups sur la science des données (traitement de données structurées) 019 Explication
[Pratique pour les débutants] Lire ligne par ligne "Prédire les prix des maisons" de kaggle (Partie 1: Lire les données)
Comment utiliser les outils d'analyse de données pour les débutants
Préparation à l’essai de «Data Science 100 Knock (traitement des données structurées)»
Construction d'environnement (Windows 10) pour 100 coups de science des données (traitement de données structurées)
Principes de base de Pandas pour les débutants ② Présentation des données de saisie