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

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 que je puisse 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 **

La mise à jour peut ne pas être possible pendant un certain temps. Quand il disparaît, Sumanne

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 57 à 62. [Dernière fois] 52-56 [Première fois avec la table des matières]

57ème

P-057: Combinez le résultat de l'extraction de la question précédente et le sexe (sexe), et créez de nouvelles données de catégorie qui représentent la combinaison du sexe et de l'âge. La valeur de la catégorie représentant la combinaison est arbitraire. Les 10 premiers éléments doivent être affichés.

Afficher uniquement votre programme et la première ligne

df=df_customer.copy() df_bins=pd.cut(df.age,[10,20,30,40,50,60,150],right=False,labels=[10,20,30,40,50,60]) df=pd.concat([df[['customer_id','birth_day']],df_bins],axis=1) df.head(10)


 >|customer_id 	|birth_day 	|age|
 |--:|--:|--:|
 |CS021313000114 	|1981-04-29 	|30|


#### **`mine57.py`**
```py

df=pd.concat([df_customer[['customer_id','birth_day','gender_cd']],df_bins],axis=1)
df['age_gen']=df.gender_cd.astype('str')+df.age.astype('str')
df.head(10)

'''Le modèle de réponse'''
df_customer_era['era_gender'] = df_customer['gender_cd'] + df_customer_era['age'].astype('str')
df_customer_era.head(10)

Depuis que j'ai fait pd.concat, j'ai senti que je n'avais pas à le détourner de la dernière fois.

encore, Ajoutez un chiffre de sexe à 30 dans cette colonne «âge» 1 (femme) + 30 (âge) = 130 Est le but de cette fois

Je n'ai pas compris ce que j'ai écrit

miss57.py


df=pd.concat([df_customer[['customer_id','birth_day','gender_cd']],df_bins],axis=1)
df=df.groupby(['age','gender_cd']).agg({'customer_id':'count'})
pd.pivot_table(df,index='age',columns='gender_cd')

~~ J'ai accidentellement croisé le tableau ~~

58ème

P-058: Faites du code de genre (gender_cd) de la trame de données client (df_customer) une variable fictive et extrayez-le avec l'ID client (customer_id). Vous pouvez afficher 10 résultats.

mine58.py


df=df_customer.copy()
pd.concat([df['customer_id'],pd.get_dummies(df['gender_cd'])],axis=1).head(10)

'''Le modèle de réponse'''
pd.get_dummies(df_customer[['customer_id', 'gender_cd']], columns=['gender_cd']).head(10)

Qu'est-ce qu'une variable fictive? J'ai pensé, j'ai vérifié Il semble que l'élément correspondant soit créé dans la première colonne et la présence ou l'absence de l'élément est indiquée par «vrai» ou «faux» dans le tableau.

Ou plutôt, c'est plus rapide de regarder le tableau

Masculin Femme inconnue
0 1 0
0 0 1
0 1 0
0 1 0
0 1 0

des choses comme ça

59e

P-059: Le montant des ventes (montant) du bloc de données de détail des reçus (df_receipt) est totalisé pour chaque ID client (customer_id), et le montant total des ventes est ** normalisé ** à une moyenne de 0 et un écart type de 1, et l'ID client. , Afficher avec le montant total des ventes. L'écart type utilisé pour la normalisation peut être soit un écart-type non biaisé, soit un écart-type d'échantillon. Cependant, si l'ID client commence par "Z", il représente un non-membre, donc excluez-le du calcul. Vous pouvez afficher 10 résultats.

……

………

Qu'est-ce que la normalisation

J'ai lu divers sites et essayé de le comprendre, mais je n'ai pas pu me rattraper parce que je sautais les mathématiques à ce moment-là.

Dois-je demander à mes aînés de me dire le site Web de référence? Ecrire aussi

df['hyou1'] =df['amount_sum'] - df.amount_sum.mean()

Je me trompe.

J'essayais de rechercher la réponse preprocessing.scale à l'envers pour essayer de la comprendre d'une manière ou d'une autre

https://note.nkmk.me/python-list-ndarray-dataframe-normalize-standardize/ Seconde moitié

Normalisation / standardisation des pandas.DataFrame et pandas.Series Utilisez la méthode pandas ~ Omis ~

Au programme print( (df.T - df.T.mean()) / df.T.std() ) # col1 col2 col3 # a -1.0 0.0 1.0 # b -1.0 0.0 1.0 # c -1.0 0.0 1.0

Ça y est En d'autres termes (Données /.mean ()) /.std () Si c'est le cas

mine59.py


df=df_receipt.copy()
df=df.query('not customer_id.str.startswith("Z")',engine='python')
df=df.groupby('customer_id').agg({'amount':'sum'}).reset_index()

df['hyou1'] =(df['amount'] - df.amount.mean()) / df.amount.std()
df.head(10)

'''Le modèle de réponse'''
#prétraitement sklearn.Calculé avec l'écart type de l'échantillon pour utiliser l'échelle
df_sales_amount = df_receipt.query('not customer_id.str.startswith("Z")', engine='python'). \
    groupby('customer_id').agg({'amount':'sum'}).reset_index()
df_sales_amount['amount_ss'] = preprocessing.scale(df_sales_amount['amount'])
df_sales_amount.head(10)

Cela correspondait.

60ème

P-060: Le montant des ventes (montant) du bloc de données de détail de la réception (df_receipt) est totalisé pour chaque ID client (customer_id), et le montant total des ventes est normalisé à la valeur minimale 0 et la valeur maximale 1 à l'ID client et au montant des ventes. Afficher avec le total. Cependant, si l'ID client commence par "Z", il représente un non-membre, donc excluez-le du calcul. Vous pouvez afficher 10 résultats.

Sur même site

print((df - df.min()) / (df.max() - df.min())) # col1 col2 col3 # a 0.0 0.0 0.0 # b 0.5 0.5 0.5 # c 1.0 1.0 1.0

Parce qu'il y a, c'est détourné

mine60.py


df=df_receipt.copy()
df=df.query('not customer_id.str.startswith("Z")',engine='python')
df=df.groupby('customer_id').agg({'amount':'sum'}).reset_index()
df['minmax'] =(df['amount'] - df.amount.min()) / (df.amount.max()-df.amount.min())
df.head(10)

'''Le modèle de réponse'''
#prétraitement sklearn.Calculé avec l'écart type de l'échantillon pour utiliser l'échelle
df_sales_amount = df_receipt.query('not customer_id.str.startswith("Z")', engine='python'). \
    groupby('customer_id').agg({'amount':'sum'}).reset_index()
df_sales_amount['amount_mm'] = preprocessing.minmax_scale(df_sales_amount['amount'])
df_sales_amount.head(10)

61e et 62e

P-061: Le montant des ventes (montant) du bloc de données de détail de la réception (df_receipt) est totalisé pour chaque ID client (customer_id), et le montant total des ventes est converti en une valeur logarithmique normale (base = 10) pour totaliser l'ID client et le montant des ventes. Afficher avec. Cependant, si l'ID client commence par "Z", il représente un non-membre, excluez-le du calcul. Vous pouvez afficher 10 résultats.

P-062: Le montant des ventes (montant) du bloc de données de détail du reçu (df_receipt) est totalisé pour chaque ID client (customer_id), et le montant total des ventes est converti en une valeur logarithmique naturelle (base = e) pour totaliser l'ID client et le montant des ventes. Afficher avec. Cependant, si l'ID client commence par "Z", il représente un non-membre, donc excluez-le du calcul. Vous pouvez afficher 10 résultats.

Pour la logarithmisation, utilisez la fonction exponentielle

mine61_62.py


df=df_receipt.copy()
df=df.query('not customer_id.str.startswith("Z")',engine='python')
df=df.groupby('customer_id').agg({'amount':'sum'}).reset_index()

#60, rapport de log régulier
df['jouyou']=df.amount.apply(lambda x: math.log10(x))
#61, rapport logarithmique naturel
df['shizen']=df.amount.apply(lambda x: math.log(x))

df.head(10)

Peut être mis avec

mohan61_62.py


#prétraitement sklearn.Calculé avec l'écart type de l'échantillon pour utiliser l'échelle
df_sales_amount = df_receipt.query('not customer_id.str.startswith("Z")', engine='python'). \
    groupby('customer_id').agg({'amount':'sum'}).reset_index()
df_sales_amount['amount_log10'] = np.log10(df_sales_amount['amount'] + 1)
df_sales_amount.head(10)

#prétraitement sklearn.Calculé avec l'écart type de l'échantillon pour utiliser l'échelle
df_sales_amount = df_receipt.query('not customer_id.str.startswith("Z")', engine='python'). \
    groupby('customer_id').agg({'amount':'sum'}).reset_index()
df_sales_amount['amount_loge'] = np.log(df_sales_amount['amount'] + 1)
df_sales_amount.head(10)

………

Qu'est-ce que «+ 1»?

Jusqu'à ici pour cette fois

Le journal est une partie que j'ai commencé à confondre en mathématiques au lycée, donc je suis vraiment désolé. Si vous connaissez ce "+ 1", veuillez commenter. Vraiment Niwa Karanai

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 ~ 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 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 de la science des données 100 coups (P041 ~ 060)
Commentaire sur la science des données à 100 coups (P081 ~ 100)
"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 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)
[Commande Linux] Liste d'options de commande moins [À voir pour les débutants]
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