背景:
有个朋友需要帮忙,急需在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
图没完全截完。
主观性问题也可以计算均值,因为选项一般为从”极不满意”到”非常满意”这种打分类型的。
以上。
Original: https://blog.csdn.net/weixin_41963050/article/details/122765465
Author: kkkkkkel
Title: 如何1天内完成问卷调查分析报告(数据模型与决策课程作业)
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/676015/
转载文章受原作者版权保护。转载请注明原作者出处!