当前位置: 首页 > 面试题库 >

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

锺离伟彦
2023-03-14
问题内容

如何获得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


 类似资料:
  • 问题内容: 我有一个包含布尔值的pandas对象。如何获得包含每个值逻辑的序列? 例如,考虑一个包含以下内容的系列: 我想要获得的系列将包含: 这似乎应该相当简单,但显然我放错了我的mojo =( 问题答案: 要反转布尔系列,请使用: 使用Python2.7,NumPy 1.8.0,Pandas 0.13.1: 从Pandas 0.13.0开始,Series不再是;的子类。它们现在是的子类。这可能

  • 我有一个包含布尔值的pandas对象。如何获得包含每个值的逻辑

  • 第一科伦:武器 第二栏:Pepetrator_年龄 例如,y轴应该是案件数量x轴犯罪人的年龄 线是犯罪者使用的武器类型 您可以将其复制粘贴到jupyter以初始化数据集 此处的数据集:https://www.kaggle.com/jyzaguirre/us-homicide-reports

  • 我有一个数据帧,我想按Col1 Col2 Col3分组,得到值列的0频率:df= 我如何应用groupby来实现 非常感谢。

  • 问题内容: 不知道这里出了什么问题…我想要的只是本系列中的第一个也是唯一的元素 为什么这样不起作用?以及如何获得第一个元素? 问题答案: 当索引为整数时,您将无法使用位置索引器,因为选择将是模棱两可的(应基于标签还是位置返回?)。您需要明确使用 或传递标签。 由于索引类型是对象,因此可以进行以下操作: 但是对于整数索引,情况有所不同: