Python

groupby + transform: ویژگی‌های هم‌تراز با ردیف‌ها

transform یه سری به اندازه‌ی DataFrame اصلی برمی‌گردونه: حرف نداره برای اینکه هر ردیف رو نسبت به گروه خودش نرمال کنی.

کاربرد

z-score به تفکیک دسته، تا مبالغ غیرعادی رو همون‌جا داخل سگمنت خودشون لو بدی.

پیش‌نیازها

Python 3.9+, pandas

Python
import pandas as pd

g = df.groupby("categorie")["montant"]

# Score z calculé PAR GROUPE, aligné sur les lignes d'origine
df["zscore_grp"] = (df["montant"] - g.transform("mean")) / g.transform("std")

# Part de chaque ligne dans le total de son groupe
df["part_grp"] = df["montant"] / g.transform("sum")

# Lignes anormales au sein de leur propre segment
outliers = df[df["zscore_grp"].abs() > 3]

نتیجه

>>> outliers[["categorie", "montant", "zscore_grp", "part_grp"]]
         categorie  montant  zscore_grp  part_grp
842   informatique  48900.0        3.42     0.118
1217      mobilier  31200.0        3.87     0.094
3406  informatique  52750.0        3.71     0.127
PandasgroupbytransformOutliers

اسنیپت‌های مرتبط

بازگشت به آزمایشگاه داده