[PYTHON] Standardisez par groupe avec les pandas

introduction

Je traitais des données pour l'apprentissage automatique avec des pandas, Je voulais normaliser par groupe de certaines colonnes plutôt que normaliser dans son ensemble. Cependant, bien que le nom du groupe n'ait pas besoin d'être normalisé, il y avait une scène dans laquelle on souhaitait effectuer un traitement de normalisation tout en conservant le nom du groupe. C'est juste un mémo.

Environnement d'exécution

pandas = 0.25.3 numpy = 1.18.0

Code à standardiser par groupe dans les pandas

Normaliser les colonnes pour chaque nom de classe dans un tableau comme celui ci-dessous

class a b c
a 1.0 2.0 3.0
a 4.0 5.0 6.0
b 7.0 8.0 9.0
b 10.0 11.0 12.0

import pandas as pd
import numpy as np

# make data set
df = pd.DataFrame(np.arange(12).reshape(4, 3),
                  columns=['col_0', 'col_1', 'col_2'],
                  index=['row_0', 'row_1', 'row_2','row_3'])
df["class"] = ["a", "a", "b", "b"]

# Standardization for each group
class_ = df[["class"]]
class_names = df.groupby("class").groups.keys()
for name in class_names:
     df_tmp = df[(df['class'] == name)].drop(columns=['class'])
     df[(df['class'] == name)] =  (df_tmp - df_tmp.mean()) /df_tmp.std()
df["class"] = class_

Premier poste. .. C'est juste un mémo. S'il vous plaît laissez-moi savoir s'il existe une meilleure façon.

Recommended Posts

Standardisez par groupe avec les pandas
Manipuler des chaînes avec un groupe pandas par
Génération de fonctionnalités avec pandas group par
Créez une tranche d'âge avec les pandas
Pandas: groupby () pour compléter la valeur par groupe
Comparaison de vitesse lors du changement de groupe par pandas
Trier par pandas
Quand to_csv avec Pandas, c'est devenu ligne par ligne
Dessinez un graphique en traitant avec Pandas groupby
Visualisez rapidement avec les pandas
Traitement des ensembles de données avec des pandas (1)
Échantillonnage bootstrap avec Pandas
Convertir 202003 en 2020-03 avec les pandas
Traitement des ensembles de données avec des pandas (2)
Fusionner les ensembles de données avec les pandas
Pandas apprenant avec la chimioinfomatique
Visualisation des données avec les pandas
Manipulation des données avec les Pandas!
Mélangez les données avec les pandas
Extraire N échantillons pour chaque groupe avec Pandas DataFrame
pandas Matplotlib Résumé par utilisation
Lire csv avec des pandas python
Charger json imbriqué avec des pandas
[Python] Changer de type avec les pandas
Mémo de visualisation par pandas, seaborn
Empêchez les omissions avec l'impression de pandas
Conseils de traitement des données avec Pandas
Extraire la valeur maximale avec les pandas.
Standardiser la distribution non normale avec un score Z robuste
Traçage de données polyvalent avec pandas + matplotlib
[Python] Joindre deux tables avec des pandas
Extraire plusieurs colonnes spécifiques avec des pandas
1. Statistiques apprises avec Python 1-1. Statistiques de base (Pandas)
Analyse pratique avec Pandas + notebook Jupyter
Dessinez un graphique avec des pandas + XlsxWriter
Hello World! Par QPython avec Braincrash
Bulk Insert Pandas DataFrame avec psycopg2
Je veux faire ○○ avec les Pandas
Reconnaissance d'objets avec openCV par traincascade
[Python] Formater quand to_csv avec des pandas
Gère divers formats de date avec des pandas