如何提取python中箱形图中用该异常值指定的异常值的其他数据?
How to extract other data of outlier that is specified with that outlier in box plot in python?
这是我的 pandas 数据框:
Datetime
SN NO.
Values
data1
data2
data3
data4
data5
data6
2020-09-29T14:59:13.4461479+02:00
701
24.511
3.556
3.557
3.555
3.551
3.559
3.555
2020-09-29T15:48:04.6368679+02:00
702
24.516
3.554
3.555
3.555
3.556
3.552
3.557
2020-09-29T15:51:46.2555875+02:00
703
24.517
3.553
3.556
3.551
3.553
3.558
3.554
2020-10-01T12:51:59.2687665+02:00
704
24.519
3.552
3.557
3.556
3.559
3.557
3.557
2021-02-01T19:27:09.0472459+02:00
705
24.511
3.551
3.558
3.558
3.550
3.551
3.552
.
.
.
.
.
.
.
.
.
boxplot = df.reset_index().boxplot(column=['Values'], by = "Datetime", return_type=None)
from matplotlib.cbook import boxplot_stats
outliers = [y for stat in boxplot_stats(df['Values']) for y in stat['fliers']]
print(outliers)
boxplot.plot()
plt.show()
[很抱歉给您带来不便,这张图片已被删除]
如方框图所示,有一些异常值,但我想提取包含在具有该特定值的行中的其他数据。 (例如:数据框中的一个异常值是 24.519,但我还需要其他数据,例如 SN 号和 data1、data2、data3 等特定值。最好的方法是什么?
要获得包含所有异常值的 DF:
df_outliers = df.loc[df['Values'].isin(outlier_values), :]
只获取一行:
df_outliers = df.loc[df['Values'].eq(single_value), :]
如果您有多个具有相同值的行,它将找到所有这些行。
仅保留原始 df 中的某些列:
cols = ['data1', 'data2']
df_outliers = df.loc[df['Values'].isin(outlier_values), cols]
这是我的 pandas 数据框:
Datetime | SN NO. | Values | data1 | data2 | data3 | data4 | data5 | data6 |
---|---|---|---|---|---|---|---|---|
2020-09-29T14:59:13.4461479+02:00 | 701 | 24.511 | 3.556 | 3.557 | 3.555 | 3.551 | 3.559 | 3.555 |
2020-09-29T15:48:04.6368679+02:00 | 702 | 24.516 | 3.554 | 3.555 | 3.555 | 3.556 | 3.552 | 3.557 |
2020-09-29T15:51:46.2555875+02:00 | 703 | 24.517 | 3.553 | 3.556 | 3.551 | 3.553 | 3.558 | 3.554 |
2020-10-01T12:51:59.2687665+02:00 | 704 | 24.519 | 3.552 | 3.557 | 3.556 | 3.559 | 3.557 | 3.557 |
2021-02-01T19:27:09.0472459+02:00 | 705 | 24.511 | 3.551 | 3.558 | 3.558 | 3.550 | 3.551 | 3.552 |
. | . | . | . | . | . | . | . | . |
boxplot = df.reset_index().boxplot(column=['Values'], by = "Datetime", return_type=None)
from matplotlib.cbook import boxplot_stats
outliers = [y for stat in boxplot_stats(df['Values']) for y in stat['fliers']]
print(outliers)
boxplot.plot()
plt.show()
[很抱歉给您带来不便,这张图片已被删除]
如方框图所示,有一些异常值,但我想提取包含在具有该特定值的行中的其他数据。 (例如:数据框中的一个异常值是 24.519,但我还需要其他数据,例如 SN 号和 data1、data2、data3 等特定值。最好的方法是什么?
要获得包含所有异常值的 DF:
df_outliers = df.loc[df['Values'].isin(outlier_values), :]
只获取一行:
df_outliers = df.loc[df['Values'].eq(single_value), :]
如果您有多个具有相同值的行,它将找到所有这些行。
仅保留原始 df 中的某些列:
cols = ['data1', 'data2']
df_outliers = df.loc[df['Values'].isin(outlier_values), cols]