Untitled
# Ограничиваем выбросы по правилу трех сигм для каждой группы (label) df_filtered = df.copy() # Для каждого label вычисляем среднее и стандартное отклонение for label in df['label'].unique(): mean = df_filtered[df_filtered['label'] == label]['total_monthly_litres_dil'].mean() std = df_filtered[df_filtered['label'] == label]['total_monthly_litres_dil'].std() # Фильтруем данные, оставляя значения в пределах трех сигм от среднего threshold = 3 * std df_filtered = df_filtered[~((df_filtered['label'] == label) & (abs(df_filtered['total_monthly_litres_dil'] - mean) > threshold))] # Повторяем построение boxplot с отфильтрованными данными plt.figure(figsize=(10, 6)) sns.boxplot(x='label', y='total_monthly_litres_dil', data=df_filtered) plt.title('Boxplot of Volumes by Label (Filtered with 3 Sigma Rule)') plt.xlabel('Label') plt.ylabel('Total Monthly Litres') plt.xticks(rotation=45) plt.show()
Leave a Comment