毕设数据处理记录:python从字典中找出前n个累加和大于某阈值的解决方法_Devin_WR的博客-程序员宅基地

技术标签: excel  python  数据分析  

python从字典中找出前n个累加和大于某阈值的解决方法

问题背景:

最近在做硕士毕业大论文的数据处理等工作,其中需要从一个经过降序排列的excel中的topic、value两列找出累加和大于设定阈值的前n项所对应的topic项

表格如下:

输出文件是一个DataFrame类型
输出文件是一个DataFrame类型,有三列数据,分别为[‘author’,‘topic’,‘value’]
现在就要把value列数值累加和大于0.8(设定的阈值)所对应的topic取出来,并且放到一个列表中,供后续数据处理任务使用。

直接上代码:

# 定义一个函数,该函数实现了对数值的降序排列,并且将累加和大于阈值的对应topic项取到的功能
def order_dict(dicts, n):
    result = []
    result1 = []
    result2 = []
    r_sum = 0
    p = sorted([(k, v) for k, v in dicts.items()], reverse=True) #对字典降序处理
    s = set()
    for i in p:
        s.add(i[1])    #把 p字典中每个键值对的value值拿到
    for i in sorted(s, reverse=True)[:]:
        for j in p:
            if j[1] == i:
                result.append(j)
    for r in result:
        r_sum += r[1]
        result1.append(r[0])
        result2.append(r[1])
        if r_sum > n:  #这里把累加和大于阈值的前n项取出来,并且达到该条件就立刻跳出循环
            break
    return result1,result2

输出函数结果看一下:

print(order_dict(results,0.8))

对应的topic项
在这里插入图片描述
对应的value值
[0.245762711864406, 0.144067796610169, 0.144067796610169, 0.0762711864406779, 0.0762711864406779, 0.059322033898305, 0.0423728813559322, 0.0423728813559322]

总结:
主要是对字典key,value的操作处理,注意好每个循环的功能即可

参考文章链接:
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_36110407/article/details/117337117

智能推荐

35:easygui_荒漠天际的博客-程序员宅基地

一、导入模块1.>>> import easygui>>> easygui.msgbox('Hello')'OK'2.>>> from easygui import *>>> msgbox('嗨,小美女')3.>>> import easygui as g>&

基于OpenResty和Node.js的微服务架构实践_weixin_30856725的博客-程序员宅基地

什么是微服务?传统的单体服务架构是单独服务包,共享代码与数据,开发成本较高,可维护性、伸缩性较差,技术转型、跨语言配合相对困难。而微服务架构强调一个服务负责一项业务,服务可以单独部署,独立进行技术选型和开发,服务间松耦合,服务依赖的数据也独立维护管理。虽然微服务存在部署复杂、运维难度较大、分布式事务控制难、容错要求高等缺点,但总体而言,微服务的优点远大于其复杂性。微服务架构需要注意哪些...

JVM入门学习笔记——上篇:内存与垃圾回收(10-13)_angenin的博客-程序员宅基地

10、对象的实例化内存布局与访问定位11、直接内存12、执行引擎13、StringTable

青岛大学2018秋《C语言程序设计》期末模拟练习-第I部分_喝茶喝咖啡非常喜欢冰的博客-程序员宅基地_以下代码语法正确的是

一、判断题1-1下面这段代码,对a采用八进制数值进行赋值,因此打印输出的结果是945。(2分) F#include <stdio.h>int main(){ int a,b; a = 029; b = 920; printf("%d", a+b); return 0;}1-2假设某段C语言程序中定义了两个变量a、b,并且两个变量都不为0,则表达式 a / b的值必不为0。(2分) F1-3下面这段程序,将循环有限次,在打印输出有限行之

依托大数据 构建税收共治格局_weixin_33834137的博客-程序员宅基地

在打牢基础上下功夫,多角度构建税收大数据集群;在深化应用上下功夫,多层次挖掘税收大数据价值;在升级拓展上下功夫,多维度推动税收大数据创新中办、国办发布的《深化国税、地税征管体制改革方案》从国家治理高度对税制改革作出部署,对税收事业的改革创新发展具有里程碑意义。树立和践行共治思维,以“信息高度聚合”为切入点,打破影响和制约税收治理体系和治理能力现代化的瓶...

springboot整合mybatis-plus_zhm_sky的博客-程序员宅基地

一、添加依赖<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.4.3.1</version></dependency><dependency>

随便推点

adb devices 报错failed to start daemon_blingbling*的博客-程序员宅基地

adb server version (31) doesn’t match this client (41); killing…could not read ok from ADB Serverfailed to start daemonadb.exe: failed to check server version: cannot connect to daemon查资料发现:这个是so...

华为WLAN基本概述_renkie人可毅的博客-程序员宅基地_华为wlan

介绍了WLAN的基本概念以及WLAN的工作原理。文章最后附上了自己整理的思维导图。

各种场景唤起 App 骚操作_月将明的博客-程序员宅基地

转载自 https://juejin.im/post/6844903993152372749

JDK进阶(1):类加载器 ClassLoader_Sam Sho的博客-程序员宅基地

文章目录类加载器类加载过程默认类加载器启动(Bootstrap)类加载器扩展(Extension)类加载器系统(System)类加载器类加载器树图简单代码类加载器的委托机制类的加载委托机制原理ClassLoader示例类与类加载器自定义类加载器自定义方法示例Tomcat 的类加载器(Tomcat8.5)使用类加载获取资源文件参考类加载器类加载过程加载:类加载过程的一个阶段。通过一个类的完全...

mysql输出九九乘法表_for循环实现九九乘法表_呼呼鸟的博客-程序员宅基地

{% for x in range(1,10) %}{% for y in range(1,x + 1) %}{{ y }} * {{ x }} = {{ y * x }}{% endfor %}{% endfor %}{% for x in range(1,10) %}{% for y in range(1,10) if y <= x %}{{ y }} * {{ x }} = {{ y ...

NDK 开发实战 - 实时人脸检测和识别_HongChengDarren的博客-程序员宅基地

关于人脸检测和识别,应用的范围是非常广的,其实之前的《NDK开发前奏 - 实现支付宝人脸识别功能》 也有提到,只是那时并未具体的去分析算法和实现原理,这里笔者打算一步一步来分析和实现人脸识别,首先我们得要明确人脸检测和人脸识别是两个不同的概念,人脸检测是检测有人脸,人脸识别是匹配你是你,他们所采用的算法也是不一样的,这篇文章是基于人脸检测来实现人脸识别。我们先来看下已经实现了的人脸检测效果:人...

推荐文章

热门文章

相关标签