在seaborn联合分布图(或一般的matplotlib散点图)中,如何从分布中自动标记异常值(给定预定的异常值检测)?待注释点将在下面突出显示:
异常值标签仅适用于一个分布(t检验组织),并通过查找该分布的5个最小值来确定。分布来自pandas数据框,因此所需的注释是该条目的索引(设置为'SYMBOL'
)。
以下是我用来生成图表的代码:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
sns.set(style="white")
control_df = pd.read_csv('report_null.csv')
control_df.set_index('SYMBOL', inplace=True)
x1 = pd.Series(control_df['t_stat'], name="t-test null")
test_df = pd.read_csv('report_test.csv')
test_df.set_index('SYMBOL', inplace=True)
x2 = pd.Series(test_df['t_stat'], name="t-test tissue")
%matplotlib inline
g = sns.jointplot(x1, x2)
通过以下方式检测到异常值:
test = test_df.dropna().sort('t_stat', ascending=False)
test.tail(n=5)
这产生了这个df(对于编辑感到抱歉):
理想情况下,这个注释是自动的,但如果不可能,我仍然想知道如何从预先计算的异常值列表中手动注释。我看起来有点像这样: