熊猫:如何获得熊猫系列中最常出现的物品?

发布于 2021-01-29 14:57:11

如何获得pandas系列中最常出现的物品?

考虑系列 s

s = pd.Series("1 5 3 3 3 5 2 1 8 10 2 3 3 3".split()).astype(int)

返回值应该是 3

关注者
0
被浏览
79
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    您可以使用pd.Series.mode并提取第一个值:

    res = s.mode().iloc[0]
    

    这不一定是低效率的。与往常一样,对您的数据进行测试以查看适合的数据。

    import numpy as np, pandas as pd
    from scipy.stats.mstats import mode
    from collections import Counter
    
    np.random.seed(0)
    
    s = pd.Series(np.random.randint(0, 100, 100000))
    
    def jez_np(s):
        _, idx, counts = np.unique(s, return_index=True, return_counts=True)
        index = idx[np.argmax(counts)]
        val = s[index]
        return val
    
    def pir(s):
        i, r = s.factorize()
        return r[np.bincount(i).argmax()]
    
    %timeit s.mode().iloc[0]                 # 1.82 ms
    %timeit pir(s)                           # 2.21 ms
    %timeit s.value_counts().index[0]        # 2.52 ms
    %timeit mode(s).mode[0]                  # 5.64 ms
    %timeit jez_np(s)                        # 8.26 ms
    %timeit Counter(s).most_common(1)[0][0]  # 8.27 ms
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看