统计Excel文件中的答案选项和类别

news/2024/7/21 7:40:04 标签: excel

功能

本脚本主要完成以下功能:

  • 读取指定的Excel文件。
  • 从Excel文件中提取问题和答案选项。
  • 统计每个问题的答案选项分布。
  • 按类别细分每个答案选项的计数。
  • 将统计结果输出到JSON文件。

使用方法

要使用该脚本,用户需要提供以下信息:

  • Excel文件的路径。
  • 期望输出的JSON文件的路径。

脚本将自动执行统计操作,并将结果保存到指定的JSON文件中。

示例代码

import pandas as pd
import json

def count_answers_and_categories(file_path, output_json_file):
    # 读取Excel文件
    df = pd.read_excel(file_path, engine='openpyxl')

    # 获取问题列的列名
    questions = df.iloc[0, 3:-1].index.tolist()

    # 初始化一个字典来存储统计结果
    result = {}

    # 职务类别列表
    categories = ["类别一", "类别二", "类别三"]

    # 答案选项列表
    answers = ["选项A", "选项B", "选项C", "选项D", "选项E"]

    # 遍历每个问题
    for question in questions:
        # 初始化答案选项的计数和类别计数
        answer_counts = {answer: 0 for answer in answers}
        answer_category_counts = {answer: {category: 0 for category in categories} for answer in answers}

        # 遍历DataFrame的行(从第二行开始)
        for index, row in df.iloc[1:].iterrows():
            answer_option = row[question]
            category_option = row[1]

            # 确保答案选项和类别都在列表中
            if answer_option in answers and category_option in categories:
                answer_counts[answer_option] += 1
                answer_category_counts[answer_option][category_option] += 1

        # 将统计结果添加到结果字典中
        result[question] = {
            'answer_counts': answer_counts,
            'answer_category_counts': answer_category_counts
        }

    # 保存结果到JSON文件
    with open(output_json_file, 'w', encoding="utf-8") as json_file:
        json.dump(result, json_file, ensure_ascii=False, indent=4)

# 示例文件路径
file_path = './example.xlsx'
output_json_file = './example_answers_and_categories.json'

# 调用函数
count_answers_and_categories(file_path, output_json_file)

JSON输出示例

输出的JSON文件将包含每个问题的统计信息,例如:

{
    "问题1": {
        "answer_counts": {
            "选项A": 10,
            "选项B": 15,
            "选项C": 5,
            "选项D": 2,
            "选项E": 0
        },
        "answer_category_counts": {
            "选项A": {
                "类别一": 3,
                "类别二": 4,
                "类别三": 3
            },
            "选项B": {
                "类别一": 5,
                "类别二": 7,
                "类别三": 3
            },
            // ... 更多答案选项和类别计数
        }
    },
    // ... 更多问题的统计信息
}

结论

通过这个脚本,我们可以快速地从Excel文件中提取和统计答案选项及职务类别的分布情况,并将结果以JSON格式保存,便于进一步的分析和处理。


上述代码和文档中的文件路径和问题列表是示例性的,需要根据实际情况进行调整。在运行脚本之前,请确保您的环境中已安装了 pandasopenpyxl 库。

水平有限,有问题随时交流;


http://www.niftyadmin.cn/n/5475457.html

相关文章

牛客NC93 设计LRU缓存结构【hard 链表,Map Java】

题目 题目链接: https://www.nowcoder.com/practice/5dfded165916435d9defb053c63f1e84 思路 双向链表map最新的数据放头结点,尾节点放最老的数据,没次移除尾巴节点本地考察链表的新增,删除,移动节点参考答案Java im…

【Java集合进阶】LinkedList和迭代器的源码分析泛型类、泛型方法、泛型接口

🍬 博主介绍👨‍🎓 博主介绍:大家好,我是 hacker-routing ,很高兴认识大家~ ✨主攻领域:【渗透领域】【应急响应】 【Java】 【VulnHub靶场复现】【面试分析】 🎉点赞➕评论➕收藏 …

tcp/ip细节

主动方: 发送fin进入fin_wait1,收到fin的ack进入fin_wait2,发送fin时接收缓冲区还有数据 - 应用层不读数据你就close?发reset告知对端你出问题了 默认:linger关闭,close调用立即返回(发出发送缓冲区未发出数据和fin后) linger开启&#xff0…

三.音视频编辑-媒体组合-导出

引言 一个可以播放的媒体组合我们已经创建好了,不过如果不能把这个组合的结果导出那么组合的价值就不那么突出,所以我们还要学习如何将组合的媒体进行导出。 时间处理 有了上篇博客做基础,导出功能就显得容易许多,所以我们在这…

UVA247 Calling Circles 解题报告

题目链接 https://vjudge.net/problem/UVA-247 题目大意 如果两个人相互打电话(直接或间接),则说他们在同一个电话圈里。例如,a打给b,b打给c,c打给d,d打给a,则这4个人在同一个圈里…

打包与发布iOS应用的完整指南

摘要 本文旨在指导开发者如何准备工作、打包和发布iOS应用。详细介绍了生成请求证书文件、生成APP开发证书及发布证书、生成APP ID、添加调试设备、生成描述文件等步骤。同时,结合案例演示和实际操作,帮助读者更好地理解和应用这些步骤。通过本文&#…

面向低碳经济运行目标的多微网能量互联优化调度matlab程序

微❤关注“电气仔推送”获得资料(专享优惠) 运用平台 matlabgurobi 程序简介 该程序为多微网协同优化调度模型,系统在保障综合效益的基础上,调度时优先协调微网与微网之间的能量流动,将与大电网的互联交互作为备用…

C++ 【原型模式】

简单介绍 原型模式是一种创建型设计模式 | 它使你能够复制已有对象,客户端不需要知道要复制的对象是哪个类的实例,只需通过原型工厂获取该对象的副本。 以后需要更改具体的类或添加新的原型类,客户端代码无需改变,只需修改原型工…