You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Pandas计算序列的最大最小不同值及其对应出现频率

实现方案

核心逻辑

pandas的value_counts()方法返回的是一个Series对象:

  • 该Series的索引是列的原始唯一取值
  • 该Series的值对应每个原始取值的出现频次
    因此你只需要对Series的索引做极值查询,就能拿到对应的频次。

调整后完整代码

import pandas as pd

def main():
    s = pd.read_csv('A1-dm.csv')
    print("******************************************************")
    print("Entropy Discretization                         STARTED")
    s = entropy_discretization(s)
    print("Entropy Discretization                         COMPLETED")

def entropy_discretization(s):
    I = {}
    i = 0
    n = s.nunique()['A1']
    print("******************")
    print("calculating maxf")
    max_value, max_freq = maxf(s['A1'])
    print(f"maxValue = {max_value}, maxF = {max_freq}")
    print("******************")
    print("calculating minf")
    min_value, min_freq = minf(s['A1'])
    print(f"minValue = {min_value}, minF = {min_freq}")
    print("******************")
    # 此处保留你原有的熵离散化逻辑即可
    return s

def maxf(s):
    vc = s.value_counts()
    # 取原始取值的最大值
    max_val = vc.index.max()
    # 取该最大值对应的频次
    max_freq = vc[max_val]
    return max_val, max_freq

def minf(s):
    vc = s.value_counts()
    # 取原始取值的最小值
    min_val = vc.index.min()
    # 取该最小值对应的频次
    min_freq = vc[min_val]
    return min_val, min_freq

if __name__ == "__main__":
    main()

补充说明

如果你后续需要取频次本身的最大/最小值(比如示例中频次最高的是42,对应取值2;频次最低的是1,对应取值3和4),可以调整逻辑为:

  • 最大频次:vc.max(),对应取值:vc[vc == vc.max()].index.tolist()
  • 最小频次:vc.min(),对应取值:vc[vc == vc.min()].index.tolist()

内容的提问来源于stack exchange,提问作者Evan Gertis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 01:09:02