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

这篇博客介绍了如何利用Python的openpyxl和pyecharts库从Excel问卷数据中自动化生成饼图。作者首先将Word问卷转为Excel格式,然后通过Python读取数据,创建饼图,并使用pyppeteer将图表保存为PNG图片,实现了批量处理大量数据的需求。

在学习工作中,会经常遇见需要制作很多图表,虽然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!")

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

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

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值