练习|量表分辨力计算

用自己最近完成课程作业回收的问卷结果做了一个python的小练习。目的是对问卷中量表的各个问题进行分辨力计算。(分辨力的计算方法:先根据受测对象全体的总分排序;然后取出总分最高的25%的人和总分最低的25%的人,并计算这两部分人在每一条陈述上的平均分;将这两个平均数相减,所得出的就是这一条陈述的分辨力系数。)原文件中前1-6题为基本信息题,第7-21列为量表题目。
1 首先读入文件。
import pandas as pd import numpy as np
2 把量表的部分选出来,即从第6+1列到第21-1+1列
data=pd.read_csv('path',encoding="gb2312")#这里加上encoding="gb2312"是因为表格中有部分中文内容

select=data[data.columns[6:21]]
data.info()  

3 查看select结果如下:


练习|量表分辨力计算_第1张图片
image.png

4 根据分辨力的计算方法,写了一个函数(函数中heapq模块中的nlargest和nsmallest函数可以很方便地得到指定最值个数的list,由于是list不能直接计算均值,这里还用了pd.DataFrame对数据格式进行了转换)

def getper(ds,s):  
    import heapq
    x=range(0,15)
    for i in x:
        maxn=pd.DataFrame(heapq.nlargest(len(s)/4,s[s.columns[i]])).mean()
        minn=pd.DataFrame(heapq.nsmallest(len(s)/4,s[s.columns[i]])).mean()
        ds[i+6]=maxn-minn
    return ds

ds=pd.DataFrame() ds=getper(ds,select) ds
结果:

image.png

将ds转置后排序
ds2=ds.T ds2.sort(0) #这样做是因为我暂时不知道怎么直接对某一行进行排序...查了好多暂时没有查到 ..方法待补充
得到结果如下,分辨力从低到高:

练习|量表分辨力计算_第2张图片
image.png

你可能感兴趣的:(练习|量表分辨力计算)