当前位置:   article > 正文

使用Python批量处理Excel数据——奥尔波特价值观量表统计结果_量表数据统计

量表数据统计

本文记录使用Python处理大量excel数据,避免手动重复过程。

0. 写在前面

我们在进行数据分析时,有时候需要变量两两之间作对比。但目前的问卷多为李克特量表,采用5点或7点计分。这时,我们需要对各题目答案大小进行两两比较,得到0/1形式的数据。

本文提供了用Python对李克特式数据进行两两比较的转化,以便后续进行瑟斯顿IRT迫选分析。

本例中使用的量表为奥尔波特价值观量表的第二部分,该量表测量6个价值观维度(经济型、科学型、审美型、精神型、政治型、社会型),共15题,每题4个答案,被试需按照自己的赞同程度对四个答案进行4/3/2/1排序。

举个量表的栗子:
在这里插入图片描述
注:

本例中奥尔波特价值观量表的计分方式采用原始计分方式即可,虽然产生自模式数据,但转换为瑟斯顿IRT分析后,维度间相关过高,故不予推荐。

如有更好的改进办法,欢迎指教讨论。

1. 处理数据内容及操作

如下图所示,所需处理数据行列数为1024*60,所需操作为:每4列为一组(对照奥尔波特价值观量表的4个答案),每组中各列两两对比,若后一列比前一列大,在新表中输出1,否则输出0。

以此类推,每一组原始数据生成6列新数据(对照量表测量6个价值观维度),总计生成90列新数据。

生成新表后,将其转化为TXT文件,以便后续操作。

以上操作可使用EXCEL自带IF函数完成,但重复内容过多,编写python程序可以减少大量工作内容。
在这里插入图片描述

2. 源代码及部分代码解析

import xlrd
from xlwt import *
import pandas as pd

#------------------读数据---------------------------------
fileName="文件路径/scores.xlsx"
data = xlrd.open_workbook(fileName)
sh = data.sheet_by_name("Sheet1")     #通过索引顺序获取


#------------------获取表信息---------------------------------
nrows=sh.nrows  #获取行数1024
ncols=sh.ncols  #获取列数60
print('原数据行列数:',nrows,ncols)


#------------------新建表格---------------------------------
book = Workbook(encoding='utf-8')
sheet = book.add_sheet('Sheet')    #创建一个sheet


#------------------对比+循环输出到新表------------------
for k in range(0,ncols-1,4):
    for j in range(1,4):
        for i in range(0,nrows):    # 循环写入一列
            if sh.cell_value(i,k+j)>sh.cell_value(i,k+0):
                sheet.write(i,int(1.5*k)+j-1,'1')
            else:
                sheet.write(i,int(1.5*k)+j-1,'0')
    for n in range(2,4):
        for i in range(0,nrows):
            if sh.cell_value(i,k+n)>sh.cell_value(i,k+1):
                sheet.write(i,int(1.5*k)+n+1,'1')
            else:
                sheet.write(i,int(1.5*k)+n+1,'0')
    for m in range(3,4):
        for i in range(0,nrows):
            if sh.cell_value(i,k+m)>sh.cell_value(i,k+2):
                sheet.write(i,int(1.5*k)+m+2,'1')
            else:
                sheet.write(i,int(1.5*k)+m+2,'0')


#-------------------存储新表格------------------
book.save("文件路径/Result.xls")


#------------------打印新表的数据------------------
data = xlrd.open_workbook("D:/Python38/PyProjects/Excel_Python/Result.xls")
table = data.sheet_by_name("Sheet")     #通过索引顺序获取
nrows=table.nrows  #获取行数1024
ncols = table.ncols   #获取列数90
print('处理后行列数:',nrows,ncols)


#------------------转换txt格式------------------
df = pd.read_excel("文件路径/Result.xls",header=None)       # 使用pandas模块读取数据
print('开始写入txt文件...')
df.to_csv("文件路径/Result.txt",header=None,index=False)       # 写入,逗号分隔
print('文件写入TXT成功!')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60

3. Py程序运行结果

执行程序后,所在文件夹生成Result.txt和Result.xls文件。
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/606016
推荐阅读
相关标签
  

闽ICP备14008679号