python投票一致性指数(IVC)实现代码
毕业论文中用于计算联合国会员国间在联合国大会上的投票一致性(IVC)
import pandas as pd
import sqlite3
import networkx as nx
import time
import numpy as np
def gen_dict(sql):#建立投票数据字典
votedict={}
votedict['all']={}
for c in cntylist:
votedict['all'][c]={}
votedict['all'][c]['yes']=[]
votedict['all'][c]['noyes']=[]
votedict['all'][c]['qq']=[]
votedict['all'][c]['no']=[]
votedict['all'][c]['all']=[]
for y in [1992,2001,2010]:
votedict[y]={}
for c in cntylist:
votedict[y][c]={}
votedict[y][c]['yes']=[]
votedict[y][c]['noyes']=[]
votedict[y][c]['qq']=[]
votedict[y][c]['no']=[]
votedict[y][c]['all']=[]
for c in cntylist:
c1=c
r1sql='select rcid, Country, vote, year from data where vote<4 and Country= \'%s\'' % c1 + sql
rec1=pd.read_sql(r1sql ,conn)
yeslist=rec1[rec1['vote']==1]['rcid'].tolist()
noyeslist=rec1[(rec1['vote']==2)|(rec1['vote']==3)]['rcid'].tolist()
nolist=rec1[rec1['vote']==3]['rcid'].tolist()
qqlist=rec1[rec1['vote']==2]['rcid'].tolist()
votedict['all'][c]['yes']=yeslist
votedict['all'][c]['noyes']=noyeslist
votedict['all'][c]['qq']=qqlist
votedict['all'][c]['no']=nolist
votedict['all'][c]['all']=rec1['rcid'].tolist()
for y in [1992,2001,2010]:
for c in cntylist:
c1=c
yearsql='and year>= %d and year< %d'%(y,y+8)
r1sql='select rcid, Country, vote, year from data where vote<4 and Country= \'%s\'' % c1+yearsql+sql
rec1=pd.read_sql(r1sql ,conn)
yeslist=rec1[rec1['vote']==1]['rcid'].tolist()
noyeslist=rec1[(rec1['vote']==2)|(rec1['vote']==3)]['rcid'].tolist()
nolist=rec1[rec1['vote']==3]['rcid'].tolist()
qqlist=rec1[rec1['vote']==2]['rcid'].tolist()
votedict[y][c]['yes']=yeslist
votedict[y][c]['noyes']=noyeslist
votedict[y][c]['qq']=qqlist
votedict[y][c]['no']=nolist
votedict[y][c]['all']=rec1['rcid'].tolist()
print(sql,y,'生成该年份数据')
print(sql,'数据字典已经生成')
return votedict
def ivc_gen_new(thedict,c1,c2):#基于字典计算两国间IVC
c1yes= thedict[c1]['yes']
c1no= thedict[c1]['no']
c1noyes=thedict[c1]['noyes']
c1qq=thedict[c1]['qq']
c2yes= thedict[c2]['yes']
c2no=thedict[c2]['no']
c2noyes=thedict[c2]['noyes']
c2qq=thedict[c2]['qq']
c1all=thedict[c1]['all']
c2all=thedict[c2]['all']
flist=[x for x in c1yes if x in c2yes]+[x for x in c1qq if x in c2qq]+[x for x in c1no if x in c2no]
glist=[x for x in c1qq if x in c2yes+c2no]+[x for x in c2qq if x in c1yes+c1no]
f=len(set(flist))
g=len(set(glist))
t=len(set([c for c in c1all if c in c2all]))
try:
ivc=(f+0.5*g)/t
except:
ivc=0
return ivc
IVC方法参考
Turner J. Party and constituency: Pressures on congress[M]. Baltimore: The Johns Hopkins Press, 1952.
python投票一致性指数(IVC)实现代码的更多相关文章
- Python实现各种排序算法的代码示例总结
Python实现各种排序算法的代码示例总结 作者:Donald Knuth 字体:[增加 减小] 类型:转载 时间:2015-12-11我要评论 这篇文章主要介绍了Python实现各种排序算法的代码示 ...
- 【原创】用Python爬取LeetCode的AC代码到Github
在leetCode写了105道题高调膜科,考虑搬迁到自己的GitHub上,做成一个解题题库,面试的时候也可以秀一个 但是!但是! leetCode在线IDE的功能不要太舒服,我直接线上A了不少题,本地 ...
- Python绘制3d螺旋曲线图实例代码
Axes3D.plot(xs, ys, *args, **kwargs) 绘制2D或3D数据 参数 描述 xs, ys X轴,Y轴坐标定点 zs Z值,每一个点的值都是1 zdir 绘制2D集合时使用 ...
- Python爬虫 - 爬取百度html代码前200行
Python爬虫 - 爬取百度html代码前200行 - 改进版, 增加了对字符串的.strip()处理 源代码如下: # 改进版, 增加了 .strip()方法的使用 # coding=utf-8 ...
- 软件测试自动化…python学习到什么程度?代码好不好学!
软件测试自动化…python学习到什么程度?代码好不好学! 如下:
- python 类继承演示范例的代码
把做工程过程重要的代码片段备份一次,下面的资料是关于python 类继承演示范例的代码. # a simple example of a class inheritance # tested with ...
- 震惊!!!python可以用中文来写代码
python可以用中文来写代码 说明: 偶尔间试了一下,python可以用中文来写代码,除了一些python内置函数,和运算符不能用中文外,其它的比如新定义的类名.函数名.变量名,甚至是函数间传的参数 ...
- python爬取网页的通用代码框架
python爬取网页的通用代码框架: def getHTMLText(url):#参数code缺省值为‘utf-8’(编码方式) try: r=requests.get(url,timeout=30) ...
- Python 工匠:编写条件分支代码的技巧
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由鹅厂优文发表于云+社区专栏 作者:朱雷 | 腾讯IEG高级工程师 『Python 工匠』是什么? 我一直觉得编程某种意义是一门『手艺』 ...
- Python解决八皇后问题的代码【解读】
八皇后问题 来自于西方象棋(现在叫 国际象棋,英文chess),详情可见百度百科. 在西方象棋中,有一种叫做皇后的棋子,在棋盘上,如果双方的皇后在同一行.同一列或同一斜线上,就会互相攻击. 八皇后问题 ...
随机推荐
- Delphi 格式化函数Format、FormatDateTime与FormatFloat详解
目录 Format函数 %d 代表一个整数 %u 代表一个无负号整数 %s 代表字符串 %f 代表浮点数(保留或凑够两位小数点 ) %g 代表浮点数(会去掉多余的 0) %n 代表浮点数(整数部分使用 ...
- (转) IIS隐藏响应头信息
先安装url-rewrite组件 http://www.iis.net/downloads/microsoft/url-rewrite 修改应用根目录下的Web.config配置文件 <conf ...
- linux的打开文件标志O_CLOEXEC
当没有这个标志,打开文件时,得到的fd, 将会被子进程继承,并且子进程会获得这个fd的读写能力. 往往父进程打开的文件,不希望子进程读写,所以,子进程启动之后,可以手动关闭fd. 但是关闭fd的操作不 ...
- eccodes 使用girb_filter工具
参考自ECMWF网站https://confluence.ecmwf.int/display/OPTR/ecCodes%3A+GRIB+and+BUFR+data+decoding+and+encod ...
- css 特殊性 权重排列
首先类似于二进制的理解. 0010大于0001. id = 0,1,0,0; class, [属性值],:伪类 = 0,0,1,0: <元素>,伪元素 = 0,0,0,1: 伪元素: : ...
- win10家庭版vmwarework启动蓝屏
最终升级到vmwarework16.2.5解决 据说17支持win11 再出问题直接上vm17了
- pip备份、安装requirements.txt中的包和anaconda的安装(linux)
pip备份.安装requirements.txt中的包和anaconda的安装(linux) 1. 从已有的环境中,备份已经安装的package pip freeze > requireme ...
- wrf-python离线安装
由于客户环境不能联网,python的插件库只能离线安装,wrf库的安装中踩了不少坑,特此记录. 1.官方插件库pypi.org只有压缩包,没有提供wheel,在线安装没有问题. 2.下载压缩包解压后, ...
- 上传媒体文件--添加显示进度条 layui的upload控件
上传媒体文件--添加显示进度条 layui的upload控件 详细上传功能请参考博客:上传文件--媒体文件+获取上传文件的属性信息 layui的upload控件 - じ逐梦 - 博客园 (cnbl ...
- 假设业务需要,在页面一屏中一次性展示大量图片(100张),导致img组件同时发起大量的请求,导致浏览器性能被消耗殆尽,页面卡死。怎么优化?
1.所有图片先提供占位图2.懒加载思想3.使用队列的方式4.通过信号量的机制,结合队列.例如设置可用资源数为10,则保证同一时刻,只有10张图片正在请求,其它图片处于loading状态,任意图片请求完 ...