Topsis法的python实现
def topsis(year,bigc,filefullname):
topsis={}
topsis[year]={}
f=open(filefullname,'a+')
for cnty in alhdata['cnty']:
topsis[year][cnty]={}
for index,row in alhdata[(alhdata['year']==year)&(alhdata['alh']==bigc)].iterrows():
topsis[year][row['cnty']][row['type']]=row['weight']
datalist=[]
for key in topsis[year]:
datalist.append(topsis[year][key])
newdata=pd.DataFrame(datalist)
data2 = (newdata-newdata.min())/(newdata.max()-newdata.min())
data2=data2.fillna(0)
collist=list(data2.columns)
wlist=[(np.std(data2[col])/np.mean(data2[col])) for col in collist]
best=[data2[col].max() for col in collist]
worst=[data2[col].min() for col in collist]
datagood=pd.DataFrame()
databad=pd.DataFrame()
for col in collist:
colindex=collist.index(col)
datagood[col]=wlist[colindex]*(best[colindex]-data2[col])*(best[colindex]-data2[col])
databad[col]=wlist[colindex]*(-worst[colindex]+data2[col])*(-worst[colindex]+data2[col])
for key in topsis[year]:
index=list(topsis[year].keys()).index(key)
djia=datagood.iloc[index,:].sum()
djian=databad.iloc[index,:].sum()
c=djian/(djia+djian)
print(year,key,bigc,c,file=f)
f.close()
print(year,bigc)
Topsis法的python实现的更多相关文章
- 数据机构-折半查找法(二分查找法)-Python实现
Python实现二分查找法(基于顺序表) class List: elem=[] #存储顺序表元素 last=-1 #设置初始为-1 SeqList = List() #创建一个顺序表 print(& ...
- (数据科学学习手札22)主成分分析法在Python与R中的基本功能实现
上一篇中我们详细介绍推导了主成分分析法的原理,并基于Python通过自编函数实现了挑选主成分的过程,而在Python与R中都有比较成熟的主成分分析函数,本篇我们就对这些方法进行介绍: R 在R的基础函 ...
- (数据科学学习手札08)系统聚类法的Python源码实现(与Python,R自带方法进行比较)
聚类分析是数据挖掘方法中应用非常广泛的一项,而聚类分析根据其大体方法的不同又分为系统聚类和快速聚类,其中系统聚类的优点是可以很直观的得到聚类数不同时具体类中包括了哪些样本,而Python和R中都有直接 ...
- Python与数据结构[4] -> 散列表[1] -> 分离链接法的 Python 实现
分离链接法 / Separate Chain Hashing 前面完成了一个基本散列表的实现,但是还存在一个问题,当散列表插入元素冲突时,散列表将返回异常,这一问题的解决方式之一为使用链表进行元素的存 ...
- 01背包问题(回溯法)python实现
接上一篇,相同的01背包问题,上一篇採用动态规划的方法,如今用回溯法解决. 回溯法採用深度优先策略搜索问题的解.不多说.代码例如以下: bestV=0 curW=0 curV=0 bestx=None ...
- 弱智破解法——用python破解WIFI
前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:李嘉图 PS:如有需要Python学习资料的小伙伴可以加点击下方链接自 ...
- 真香,理解记忆法学习Python基础语法
这篇文章很难写!我最开始学 Python,和大多数人一样,是看的菜鸟教程: 在写完这篇文章的第一遍后,我发现并没有写出新意,很可能读者看到后,会和我当初一样,很快就忘了.我现在已经不是读者而是作者了, ...
- 货币兑换问题(贪心法)——Python实现
# 贪心算法求解货币兑换问题 # 货币系统有 n 种硬币,面值为 v1,v2,v3...vn,其中 v1=1,使用总值money与之兑换,求如何使硬币的数目最少,即 x1,x2,x3...xn 之 ...
- 程序思想中的冒泡法在python和1200PLC中scl高级编程中的应用
冒泡排序:是计算机科学领域里面的一种算法. header 这个算法名字的由来是因为在执行算法的时候越小的元素会经由交换慢慢"浮"到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧 ...
- 光流法-opencv python
import cv2 import numpy as np cap = cv2.VideoCapture("D:/Workspace/week2/test/test_256_12.mp4&q ...
随机推荐
- selenium执行下载多个文件操作,谷歌浏览器弹出"xxx想要下载多个文件"的处理方法
背景: 使用selenium框架,批量下载多个目录的不同文件,而下载多个文件时,浏览器会弹出如下窗口 解决方案有2个:1.代码定位到元素并点击[允许].2.修改浏览器的设置,使其能够拥有自动下载的 ...
- Linux内核机制—smp_hotplug_thread
基于Linux-5.10 一.简介 1. 只是一个创建per-cpu线程执行用户提供的回调的机制. 2. 内核中已存在的注册 static struct smp_hotplug_thread idle ...
- 日志服务化&可视化&统计化
概述: ELK是Elasticsearch(简称es).Logstash.Kibana的简称,这三者是核心套件,但并非全部. Filebeat 日志采集工具 Logstash数据处理引擎 ela ...
- 使用Git GUI Here进行推送时产生报错
许多小伙伴在刚使用git时都会遇到这个问题,在推送一次内容之后,想要再次推送新的数据产生报错 下面就是我们的错误提示: 我们需要先把数据进行更新 找到Remote-->Fetch from--& ...
- EXPORT_SYMBOL的正常使用
1.EXPORT_SYMBOL的作用是什么? EXPORT_SYMBOL标签内定义的函数或者符号对全部内核代码公开,不用修改内核代码就可以在您的内核模块中直接调用,即使用EXPORT_SYMBOL可以 ...
- npm 更改在线仓库镜像地址
node 安装后,npm 的默认在线仓库镜像地址为: https://registry.npmjs.org/ 使用 npm get registry 命令可以获取到: 为了使用 npm 能够更快的下载 ...
- crontab计划运行shell脚本,调用ncl执行失败
编写了bash脚本,调用ncl脚本绘图,在前台运行时候无误,但是加入crontab任务就是始终无法出图,并且无错误输出. 经过搜索,问题得到解决.是环境变量的问题.所有执行的命令,和文件都要指定完整的 ...
- clickhouse不喜欢sql末尾分号
今天用python连clickhouse查数据,sql语句末尾加了分号,始终报错 Code: 62, e.displayText() = DB::Exception: Syntax error 删掉分 ...
- 10 个常用的 JS 工具库,80% 的项目都在用!
Day.js 一个极简的处理时间和日期的 JavaScript 库,和 Moment.js 的 API 设计保持一样, 但体积仅有2KB. npm install dayjs 基本用法 import ...
- sqlserver存储过程学习
存储过程学习 一.定义变量 --简单赋值 declare @a int set @a=5 print @a --使用select语句赋值 declare @user1 nvarchar ...