pandas - 列排序统计

标签 pandas scipy statsmodels

假设我有一个包含 N 列的数据框(例如 N=3)。每行代表一个样本:

                A        B        C                                
sample_1       64       46       69
sample_2       55       33       40
sample_3       67       51       78
sample_4       97       32       62
sample_5       50       36       39

我想知道 ABC 列的最常见的顺序是什么跨行。

在上面的例子中,可以手动对每一行进行排序:

sample_1: [B, A, C]
sample_2: [B, C, A] 
sample_3: [B, A, C]
sample_4: [B, C, A] 
sample_5: [B, C, A]

然后发现最常见的排序是[B, C, A],而[B, A, C]是第二常见的。

Pandas、scipy 或 statsmodels 中是否有任何有助于此分析的函数?例如,如果我想了解每个订单发生的频率怎么办?

最佳答案

也许:

>>> from collections import Counter
>>> f = lambda ts: df.columns[np.argsort(ts).values]
>>> Counter(map(tuple, df.apply(f, axis=1).values))
Counter({('B', 'C', 'A'): 3, ('B', 'A', 'C'): 2})

所以最常见的顺序是:

>>> _.most_common(1)
[(('B', 'C', 'A'), 3)]

或者:

>>> f = lambda ts: tuple(df.columns[np.argsort(ts)])
>>> df.apply(f, axis=1, raw=True).value_counts()
(B, C, A)    3
(B, A, C)    2
dtype: int64

关于pandas - 列排序统计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25437773/

相关文章:

python - Scipy 频谱图与 Matlab 频谱图

python - statsmodels 安装 : No module named 'numpy.distutils._msvccompiler' in numpy. distutils;从 distutils 尝试

python - Statsmodels 混合线性模型预测

python - 按分组然后应用函数然后在 Pandas Python 中展平回数据框

python - 如何根据给定行中第 3 次出现的值获取列?

python - 如何分配数据框?

python - 从直方图制作概率分布函数 (PDF)

python - 如何按给定的索引顺序对 Series 或 DataFrame 进行排序?

python - SciPy 的 optimize.minimize 中的多个变量

python - 多个 numpy 数组的矩阵乘法