Python Pandas发现2个发行版之间的统计差异

时间:2018-05-07 07:16:30

标签: python pandas numpy scipy

我有2列具有相似数据。我绘制它们来比较它们的分布,我想量化它们的差异。

df = pd.DataFrame({'a':['cat','dog','bird','cat','dog','dog','dog'],
             'b':['cat','cat','cat','bird','dog','dog','dog']})

然后我绘制数据框的2列以比较它们的分布:

ax = df['a'].value_counts().plot(kind='bar', color='blue', width=.75, legend=True, alpha=0.8)
df['b'].value_counts().plot(kind='bar', color='maroon', width=.5, alpha=1, legend=True)

enter image description here

我如何从统计上量化分布差异来说明它们有多相似?

这是一个简单的t检验还是别的什么?

1 个答案:

答案 0 :(得分:2)

为此使用two-sided Kolmogorov-Smirnov test是很常见的。

在Python中,您可以使用scipy.stats.ks_2samp

执行此操作
from scipy import stats

merged = pd.merge(
    df.a.value_counts().to_frame(),
    df.b.value_counts().to_frame(),
    left_index=True,
    right_index=True)

stats.ks_2samp(merged.a, merged.b)

一般来说,如果返回的元组的第二个值很小(比如说小于0.05),你应该拒绝这个分布是相同的假设。