【Python实现调查问卷数据统计】

您所在的位置:网站首页 纸质问卷的数据结果如何统计 【Python实现调查问卷数据统计】

【Python实现调查问卷数据统计】

2024-07-11 16:05:45| 来源: 网络整理| 查看: 265

一、背景

系统发出调查问卷,问卷的填写记录入了数据库,现在需要对用户的调查问卷填写情况进行统计。

这里使用Python对数据进行简单的处理,并将统计结果保存为excel文件。

二、连接MySQL查询数据

因为数据存储在MySQL,我使用pymysql库连接数据库。

这里编写了三条查询SQL语句,将数据分为三部分:调查问卷基本信息、调查问卷填写详情、调查问卷问题和选项。

将这三部分数据保存在一个列表中,方便后续处理。

import traceback from pprint import pprint import pymysql import yaml def data_detail(dbinfo, survey_name): """ 连接数据库查询详细数据,保存为excel :param dbinfo: 数据库连接信息 :param survey_name: 调查名称 :return: 数据库查询结果 """ # SQL列表示例 sql_list = [f'调查问卷基本信息查询SQL:select * from table1 where name={survey_name}', '调查问卷填写详情查询SQL', '调查问卷问题和选项查询SQL'] data = [execute_sql(dbinfo, sql) for sql in sql_list] return data def execute_sql(dbinfo, sql): """ 连接数据库,执行sql查询语句,返回查询结果 :param dbinfo: 数据库配置信息 :param sql: 数据库查询语句 :return: """ try: conn = pymysql.connect(**dbinfo) # 连接数据库 cursor = conn.cursor(cursor=pymysql.cursors.DictCursor) # 数据库游标 cursor.execute(sql) # 执行sql语句 results = cursor.fetchall() # 查询结果 conn.close() # 关闭数据库连接 return results except Exception as err: info = f"出了点小问题!\n{repr(err)}\n{traceback.format_exc()}" print(info) def yaml_read(filename): """ 读取yaml文件 """ with open(file=filename, mode="r", encoding="utf-8") as f: data = yaml.safe_load(f.read()) return data if __name__ == "__main__": db_info = yaml_read('cfg_mysql_test.yaml') datas = data_detail(db_info, '调查问卷数据统计测试') pprint(datas)

运行结果: 

三、查询结果保存为excel

将查询的数据结果保存到同一个excel表格中,用于后续分析统计。

先看一下查询的数据结果示例:[[{k:v,k:v},{k:v,k:v}],[{k:v,k:v},{k:v,k:v}],[{k:v,k:v},{k:v,k:v}]]

从内到外:字典-列表-字典

这里我做了如下处理:

        1.使用xlwt模块写入数据

        2.查询结果写入到同一个表格的多个工作表

        3.xlwt.xfstyle()设置表格的样式:表头、表格、时间数据

import datetime import os import time import traceback import xlwt def to_excel(data, sheet_name=None, file_name=None): """ 数据写入excel :param data: 数据查询结果 :param sheet_name: 工作表名称 :param file_name: excel文件名称 :return: """ try: book = xlwt.Workbook(encoding='utf-8') # 新建工作簿 new_datas = data_pre_handle(data) # 预处理数据 if sheet_name is None: sheet_name = ["new_sheet" + str(i + 1) for i in range(len(new_datas))] write_data(book, new_datas, sheet_name) # 数据写入工作表 save_excel(book, file_name) # 保存工作簿 except Exception as err: info = f"出了点小问题!\n{repr(err)}\n{traceback.format_exc()}" print(info) def save_excel(workbook, file_name=None): """ 保存工作簿 :param workbook: 工作簿 :param file_name: excel文件名称 :return: """ if file_name is None: sj = datetime.datetime.now().strftime("%Y-%m-%d %H%M%S") name = sj + ".xlsx" else: name = file_name + ".xlsx" workbook.save(name) cur_file = os.path.dirname(os.path.abspath(__file__)) + os.sep + name # 当前excel的保存路径 print(f"excel保存成功!【{cur_file}】") def data_pre_handle(data): """ 预处理数据库查询到的数据 :param data: 数据查询结果 :return: """ return [[list(v[0].keys())] + [list(val.values()) for index, val in enumerate(v)] for i, v in enumerate(data)] def write_data(workbook, data, sheet_name): """ 数据写入sheet :param workbook: 工作簿 :param data: 要写入的数据 :param sheet_name: 工作表名称 :return: """ try: for index, value in enumerate(data): sheet = workbook.add_sheet(sheet_name[index], cell_overwrite_ok=True) # 新建sheet size = [12 for i in value[0]] head_style = style_head(sheet, size, wrap=1, is_bg=1) # 定义表头样式 time_style = style_table_time() # 时间内容样式 normal_style = style_table_normal({"horz": "CENTER", "vert": "CENTER"}) # 普通内容样式 for col, val in enumerate(value[0]): sheet.write(0, col, val, head_style) print(f"写入表头成功!{value[0]}") for i, v in enumerate(value[1:]): for co, va in enumerate(v): val = str(va) if is_date(val): if len(val) > 19: new_val = datetime.datetime.strptime(val, "%Y-%m-%d %H:%M:%S.%f") elif 10 < len(val) 19: new_val = datetime.datetime.strptime(val, "%Y-%m-%d %H:%M:%S.%f") elif 10 < len(val) 19: new_val = datetime.datetime.strptime(val, "%Y-%m-%d %H:%M:%S.%f") elif 10 < len(val)


【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭