練習(xí)|量表分辨力計(jì)算

用自己最近完成課程作業(yè)回收的問(wèn)卷結(jié)果做了一個(gè)python的小練習(xí)。目的是對(duì)問(wèn)卷中量表的各個(gè)問(wèn)題進(jìn)行分辨力計(jì)算。(分辨力的計(jì)算方法:先根據(jù)受測(cè)對(duì)象全體的總分排序;然后取出總分最高的25%的人和總分最低的25%的人,并計(jì)算這兩部分人在每一條陳述上的平均分;將這兩個(gè)平均數(shù)相減,所得出的就是這一條陳述的分辨力系數(shù)。)原文件中前1-6題為基本信息題,第7-21列為量表題目。
1 首先讀入文件。
import pandas as pd import numpy as np
2 把量表的部分選出來(lái),即從第6+1列到第21-1+1列
data=pd.read_csv('path',encoding="gb2312")#這里加上encoding="gb2312"是因?yàn)楸砀裰杏胁糠种形膬?nèi)容

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

3 查看select結(jié)果如下:


image.png

4 根據(jù)分辨力的計(jì)算方法,寫了一個(gè)函數(shù)(函數(shù)中heapq模塊中的nlargest和nsmallest函數(shù)可以很方便地得到指定最值個(gè)數(shù)的list,由于是list不能直接計(jì)算均值,這里還用了pd.DataFrame對(duì)數(shù)據(jù)格式進(jìn)行了轉(zhuǎn)換)

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
結(jié)果:

image.png

將ds轉(zhuǎn)置后排序
ds2=ds.T ds2.sort(0) #這樣做是因?yàn)槲視簳r(shí)不知道怎么直接對(duì)某一行進(jìn)行排序...查了好多暫時(shí)沒(méi)有查到 ..方法待補(bǔ)充
得到結(jié)果如下,分辨力從低到高:

image.png

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容