使用python-Pandas剔除问卷调查中的无效样本示例
做问卷是一件头疼的事,发问卷出去让别人填结果别人乱填对自己分析问卷信息更是一件头疼的事。那该如何避免因为这些乱填的问卷影响问卷效果呢?下面我们从一个朋友让我帮他处理问卷的例子谈一下该如何使用pandas如何筛选删除那些没用的数据。
1. 剔除无效样本准则
一般而言,缺失数据达到10%以上或呈现规律规律作答即可将该样本视为无效样本。结合经验按照以下3个原则剔除无效样本:
- 如果出现10%及以上题目未作答,就视为无效作答
- 连续选择某一个选项达10%及以上的测试作答被视为无效作答
- 顺序作答(如A、B、C、D、E)重复两次及以上的测试作答被视为无效作答
下面我们将通过一个例子使用pandas将不合格的问卷剔除
2.上代码
2.1 筛选出如果出现10%及以上题目未作答,就视为无效作答
# 读取数据
import pandas as pd
path = r'D:\FileStorage\File\2020-12\某某调查问卷.xlsx'
pre_data = pd.read_excel(path)#计算数据每行中出现空值的次数——用sum_NaN表示
pre_data['sum_NaN']=pre_data.isnull().T.sum()
pre_data.shape
(24291, 100)
# 删除缺失值超过10%未作答的数据——即,sum_NaN>=(66+28)*10%, 即sum_NaN > 9
pre_data = pre_data.drop(pre_data[(pre_data.sum_NaN > 9)].index)
pre_data.shape
(24117, 100)
由此可见排除的数量为24291-24117 = 174条数据
2.2 使用pandas自带的正则表达式方法剔除满足2、3准则的数据
问卷答题从第6列到倒数第二列,因此为了方便筛选,将每一个调查问卷的问答数据列转化为字符串后,进行合并,最后只需要使用正则表达式匹配出这些无用数据,进行删除即可。
# 先将每一行中所有的问卷答案合并为新的一列
data['str_sum_answer'] = data['q1'].map(str)
for i in range(6,len(data.columns)-1):data['str_sum_answer'] += data[data.columns[i]].map(str)# 进行正则匹配
# 正则匹配规则:.*[i]{9,},其中i = 0-9中的某一个数
sub_data = data[data.str_sum_answer.str.match('.*[1]{10,}')]
for i in range(2,10):regulation = '.*['+str(i)+']{10,}' # 正则匹配规则sub_data1 = data[data.str_sum_answer.str.match(regulation)]sub_data = sub_data.append(sub_data1)
data1 = data.drop(sub_data.index) # 通过索引的方式删除选出来的行# 同理匹配选择ABCDEABCDE即1234512345的调查问卷
re2 = '.*1234512345'
sub_data2 = data1[data1.str_sum_answer.str.match(re2)]
data2 = data1.drop(sub_data2.index)
# data2.shape # 由此可见处理后还有23954列数据
data2.to_excel("处理后的数据.xlsx") # 将数据导出
由于作者才疏学浅,如果正则匹配这里有更不错的方式也欢迎留言学习
使用python-Pandas剔除问卷调查中的无效样本示例相关推荐
- python pandas 分割DataFrame中的字符串及元组
python pandas 分割DataFrame中的字符串类型数据的方法 文章目录 1.使用str.split()方法 2.使用join()与split()方法结合 3. 使用apply方法分割元组 ...
- python pandas合并单元格_利用Python pandas对Excel进行合并的方法示例
前言 在网上找了很多Python处理Excel的方法和代码,都不是很尽人意,所以自己综合网上各位大佬的方法,自己进行了优化,具体的代码如下. 博主也是新手一枚,代码肯定有很多需要优化的地方,欢迎各位大 ...
- Python的collections模块中namedtuple结构使用示例
namedtuple顾名思义,就是名字+元组的数据结构,下面就来看一下Python的collections模块中namedtuple结构使用示例 namedtuple 就是命名的 tuple,比较像 ...
- python时间序列滞后命令_如何在Python Pandas回归模型中使用滞后的时间序列变量?...
我正在创建时间序列计量经济回归模型. 数据存储在Pandas数据框中. 如何使用Python进行滞后的时序经济计量分析? 我过去曾经使用过Eviews(这是一个独立的计量经济学程序,即不是Python ...
- python对数据进行合并的函数_利用Python pandas对Excel进行合并的方法示例
前言 在网上找了很多Python处理Excel的方法和代码,都不是很尽人意,所以自己综合网上各位大佬的方法,自己进行了优化,具体的代码如下. 博主也是新手一枚,代码肯定有很多需要优化的地方,欢迎各位大 ...
- python利用pandas合并excel表格代码_利用Python pandas对Excel进行合并的方法示例
前言 在网上找了很多Python处理Excel的方法和代码,都不是很尽人意,所以自己综合网上各位大佬的方法,自己进行了优化,具体的代码如下. 博主也是新手一枚,代码肯定有很多需要优化的地方,欢迎各位大 ...
- python pandas 数据库_Python中pandas函数操作数据库
一:创建链接数据库引擎 Python from sqlalchemy import create_engine engine= create_engine('postgresql://user@58. ...
- python pandas 讲解ppt_Python中pandas的分析——包括代码实践,相关,解析,含,实战
该文章代码均在jupyter Notebook中运行,且已安装re包 # 先读取数据 import pandas as pd f = open(r'C:\Users\qingfeng\Desktop\ ...
- python pandas实现excel中的if 函数(一)
excel中,if函数的使用非常普遍.如果通过pandas可以有好几种方法,核心还是通过if语句实现.下面我来阐述一下: >>> df = pd.read_excel(r'D:/my ...
最新文章
- AI:几张图理清人工智能与机器学习、知识发现、数据挖掘、统计学、模式识别、神经计算学、数据库之间的暧昧关系
- View页面间的跳转
- Xtrabackup备份MySQL
- 前端学习(1520):vue-router嵌套路由
- 光伏等新能源信用风险事件频繁爆发
- 题解P3942_将军令
- vue获取接口数据_c#中HttpWebRequest调用接口获取数据
- 在X79 LGA2011上改造安装利民AX120R LGA1200风扇
- 13防更新描述文件_描述文件终于来了,iOS 13 也能屏蔽更新!
- web项目 压力测试
- 量子场论考试题目解答
- CDN的原理技术及使用方法
- 下行法求最小割集案例_故障树分析方法(FTA)
- 中国计算机学会推荐国内期刊目录
- java.lang.SecurityException: com.example.rxtest was not granted this permission: android.permission
- 使用Ubuntu自带Disks工具扩展(扩容 )Vmware中ubuntu 20.04的硬盘空间
- jQuery实现平年闰年判断
- 正则表达式忽略大小写
- 《痞子衡嵌入式半月刊》 第 50 期
- 环德无人便利店面向全国代理加盟连锁便利店
热门文章
- Photoshop实现双重曝光效果教程(树木人脸)
- rosbag --clock
- PaaS 以及全套服务微服务搭建流程
- 电脑win7蓝屏没有修复计算机,Win7系统由于peckp.sys文件导致电脑蓝屏怎么修复
- Himi浅谈游戏开发de自学历程!(仅供参考)
- 服务器交换机品牌型号,浪潮CN8000系列交换机
- 技术研究(发明)的途径及其手段概述-1
- 薄膜涂层厚度在线测量仪|检测实时高效率
- python3.9下载_Python-3.9下载_Python下载_Python最新版_5分享
- 用原生js封装的思想写一个购物车