有个朋友需要帮忙,急需在1天内完成4000+字的问卷调查分析报告,需要用到excel和python处理数据。
思路:一、将电子版问卷调查数据导出成excel,先在excel对数据预处理;
二、搭建起分析报告框架。由于有分析报告范例,所以框架搭建比较简单,主要分为五部分,分别是:
①问卷概况;
②主观性问题分析;
③指标单因素分析;
④指标多因素交叉分析;
⑤差异显著性分析(假设检验、方差分析);
⑥总结(略)。
PS:
①具体按问卷设计的部分进行细化,比如说指标单因素分析中可以分为受访人群社会属性统计部分(性别、年龄、学历、收入等)和问卷设计的针对性问题部分。
②在分析主观性问题前,需要用Cronbach’s α信度系数进行信度检验。
实 *** : 具体数据:import pandas as pd import numpy as np import matplotlib.pyplot as plt import pylab as pl file_path = 'raw_data_2.xlsx' file_path_ = 'raw_data.xls' data = pd.read_excel(file_path) data_ = pd.read_excel(file_path_)
excel预处理的数据分为实际选项和选项序号两种,按需要使用。
指标单因素分析def form_1(op_1,index_name): op_1_ = pd.Dataframe() op_1_.index.names=[index_name] op_1_['计数'] = op_1.iloc[:,0] op_1_['百分比'] = op_1_['计数']/op_1_['计数'].sum() op_1_['累计百分比'] = op_1_['百分比'].cumsum() op_1_.loc['合计']= [op_1_.sum().iloc[0],op_1_.sum().iloc[1],' '] return op_1_ def pie_pic(data, title_name): pl.pie(data.iloc[:,0].tolist(),labels=data.index,autopct='%3.1f%%') pl.title(title_name) #pl.legend() pl.show() # op:output op_1 = data.groupby([data.keys()[1]])[[data.keys()[1]]].count()
对单个指标进行统计及作图(仅计算频数)
指标多因素交叉分析op_4 = data.pivot_table('序号', index='index_1', columns='columns_1',margins=True, aggfunc='count') op_4[np.isnan(op_4)] = 0 op_4
python的数据透视功能选择三个维度,分别是计算的维度,index维度,columns维度。
这里选择了“序号‘、’index_1', 'index_2'。
由于计算的是频数,所以选择了计算‘序号’,选择其他维度也是可以的,
'index_1'和‘columns_1’ 按选取研究的因素进行代入。
数据是频数。
op_4_ = pd.Dataframe(np.array(op_4).T/np.array(op_4.iloc[:,-1])).T op_4_.index = op_4.index op_4_.columns = op_4.columns op_4_
把频数除以该行ALL(合计)得出百分数。
本来想在python话累积百分比柱状图,但是由于时间关系,就把数据导出csv,再在excel上画出来。
这里看出,不同年龄层对“是否”的选择有差异,但是否显著就要进行方差分析来进一步判断。
差异显著性分析(假设检验、方差分析)同样地,由于时间关系,这里选择用excel筛选出数据,进行单因素方差分析。
筛选的时候可以单独把“年龄层”和“是否”两组数据取出来,把同一个年龄层的“是否”数据筛出来后再粘贴到另一个sheet。
注意,“是否”选择用“1”和“2”进行代替。
方差分析:单因素方差析
SUMMARY
组
观测数
求和
平均
方差
0-25岁
1
2
2
#DIV/0!
25-30岁
27
41
1.51851852
0.25925926
31-35岁
32
39
1.21875
0.17641129
36-40岁
26
31
1.19230769
0.16153846
41-50岁
5
7
1.4
0.3
方差分析
差异源
SS
df
MS
F
P-value
F crit
组间
2.31028948
4
0.57757237
2.84682254
0.02870789
2.47773977
组内
17.4479523
86
0.20288317
总计
19.7582418
90
由于F>F crit,不同年龄层对“是否”的选择有显著性差异(α=0.05)。
主观性问题分析data_cov = data_.iloc[:,13:23].cov() data_cov
计算协方差的时候,选用数据为选项序号,非文字。
图没完全截完。
主观性问题也可以计算均值,因为选项一般为从“极不满意”到“非常满意”这种打分类型的。
以上。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)