求一列的平均值;但不包括奇异值



想象一下,我有一个这样的数据集:

ID           birthyear  weight
0        619040       1962       0.1231231
1        600161       1963       0.981742
2      25602033       1963       1.3123124     
3        624870       1987       10,000

我想得到柱重的平均值,但明显的10000阻碍了实际的平均值。在这种情况下,我不能改变值,但必须解决它,这是我迄今为止所得到的,但很明显,它包括了最后一个值。

avg_num_items = df_cleaned['trans_quantity'].mean()
translist = df_cleaned['trans_quantity'].tolist()

我的数据帧是df_clean,而我实际处理的列是"trans_quantity",那么在处理该值的同时,我如何处理平均值呢?

由于您在标记中添加了SQL,因此在SQL中,您希望在WHERE子句中排除它:

SELECT AVG(trans_quantity)
FROM your_data_base
WHERE trans_quantity <>  10,000

大熊猫:

avg_num_items = df_cleaned[df_cleaned["trans_quantity"] != 10000]["trans_quantity"].mean()

您也可以将您的值替换为NAN,并在平均值中跳过它:

avg_num_items =  df_cleaned["trans_quantity"].replace(10000, np.nan).mean(skipna=True)

使用panda,确保您有数字数据(10,000是字符串(,过滤阈值以上的值,并使用平均值:

(pd.to_numeric(df['weight'], errors='coerce')
.loc[lambda x: x<10000]
.mean()
)

输出:0.8057258333333334

最新更新