python - Pandas :如何获得 Pandas 系列中最频繁的项目?

标签 python python-3.x pandas series

如何获取 pandas 系列中出现次数最多的项目?

考虑系列 s

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

返回值应该是3

最佳答案

你可以只使用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

关于python - Pandas :如何获得 Pandas 系列中最频繁的项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52038896/

相关文章:

python - 新 BlobServiceClient 中的旧 BlockBlobService.get_blob_to_bytes 被什么替代?

python - 无法使用matplotlib显示数据

python - Flask-在2条不同的 route 使用相同的变量?

python - 在pandas中groupby之后过滤数据框

python - 将决策树直接转换为png

python - “numpy.ndarray”对象没有属性 'columns'

python - 如何在 Pandas 选定列数据框中应用具有多个参数的函数

python 3 smtplib : binary attachment encodes incorrectly in flask when gnupg is active

python - Try-except 未知功能?

python - 如何使用 Pandas 转置将数据从一个数据帧添加到另一个数据帧?