栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python依托Excel批量实现调查问卷数据的图表可视化

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python依托Excel批量实现调查问卷数据的图表可视化

在学习工作中,会经常遇见需要制作很多图表,虽然Word里面也提供的有图表插入,问卷星的自带图表有点不喜欢,想自己做,但是手动处理几十个甚至几百个量化数据就很麻烦,所以尝试用python处理了这个问题。

支持的问卷形式:

逻辑方法:因为我这边的调查问卷结果是固定的几个选项,区别在于问题选项的选择人数不同和问题标题不同,通过问卷星导出的Word问卷改成Excel格式后即可处理。

主要运用工具:python        openpyxl库        pyecharts库

首先CMD安装以上所需要的库:

pip install openpyxl
#安装Excel的一个处理库

pip install pyecharts
#安装pyecharts图表绘制库

pip install snapshot-pyppeteer
#安装将pyecharts绘制出来的HTML图表转换为PNG的库

pyppeteer-install
#安装pyppeteer

 需要将问卷导出这种Excel 格式:

 python代码:这边做得是饼图,需要其他形状可以参考其他形式的用法【Python可视化】超详细Pyecharts 1.x教程,让你的图表动起来~ - Awesometang - 博客园)

#库介绍https://pyecharts.org/#/zh-cn/render_images

import openpyxl
from snapshot_pyppeteer import snapshot
from pyecharts.charts import Pie
from pyecharts import options as opts
from pyecharts.render import make_snapshot


quesum = eval(input("请输入有多少个调查问题:"))

for i in range(1,quesum+1):
    #打开excel
    book = openpyxl.load_workbook('Excel文件名.xlsx')
    sheetname = book.worksheets[0]
    #获取                     
    cell1 = sheetname.cell(row=1+6*(i-1),column=1)#问题文本
    ID1 = cell1.value
    
    cell2 = sheetname.cell(row=2+6*(i-1),column=2)#非常同意选择人数
    ID2 = cell2.value
    
    cell3 = sheetname.cell(row=3+6*(i-1),column=2)#同意选择人数
    ID3 = cell3.value
    
    cell4 = sheetname.cell(row=4+6*(i-1),column=2)#一般选择人数
    ID4 = cell4.value
    
    cell5 = sheetname.cell(row=5+6*(i-1),column=2)#不同意选择人数
    ID5 = cell5.value
    
    cell6 = sheetname.cell(row=6+6*(i-1),column=2)#非常不同意选择人数
    ID6 = cell6.value
    
    #关闭
    book.close()

    # 饼图
    cate = ['非常同意', '同意', '一般', '不同意', '非常不同意']
    data = [ID2, ID3, ID4, ID5, ID6]

    pie = (Pie()
           .add('', [list(z) for z in zip(cate, data)],
                radius=["30%", "75%"],
                rosetype="radius")
           .set_global_opts(title_opts=opts.TitleOpts(title="调查数据", subtitle=ID1))
           .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {d}%"))
          )

    make_snapshot(snapshot, pie.render(), ID1+".png")
    print("现在完成:"+ID1)

print("all is Ok!")

最后运行即可,批量得到所有图片啦~

 欢迎关注,欢迎大佬指出问题或者提供更加智能化的方案。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/341319.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号