文/JSong @2017.02.28

在数据分析里面有一句话是说,80%的时间要用于数据清洗和整理,而我觉得理想的状态应该是把更多的把时间花在数据背后的洞察当中。去年11月在简书占了个坑,说要自己写一个工具来解决,今天我来填坑了。

1、解决方案概述

  1. 工具包:reportgen
  2. 项目地址:github,欢迎star 或者folk
  3. 软件依赖:python3(兼容python2,但中文部分需要手动修改一个第三方包的2行代码)
  4. 数据需求:调研数据,包括但不仅限于问卷星原始数据、问卷网原始数据
  5. 主要功能1: 自动生成概述性质的报告(ppt格式,针对每道题目给出频数统计,并绘制ppt图表)
  6. 主要功能2:自动交叉分析,并生成报告(自动卡方检验、TGI、CHI指标计算、简单结论提取等)

2、准备工作

依赖环境:

  1. python科学计算所需的包,建议直接安装anaconda(强烈推荐使用python3版本)
  2. 安装第三方包python-pptx: 在cmd中输入:"pip install python-pptx"
  3. 安装report包: 下载report\report.py, 然后放在工作目录即可(省心点可以直接扔进 C:\Anaconda3\Lib\site-packages 中,这样在任何地方都能使用该工具包啦)

备注

py2.7版本的pptx包对中文支持有 bug, 请按照如下方式修改

  1. 打开文件 ".\pptx\chart\xmlwriter.py"
  2. 将大约1338行和1373行的 "escape(str(name))" 改为"escape(unicode(name))"

3、快速上手

【不懂或者不想学python3的请看这】

为了方便更多人使用,我给windows用户提供了一个很简单的使用方法,大家下载项目地址中的文件夹reportgen[无python经验的下载]即可,使用说明也在其中,非常简单。这里也提供一个百度云盘地址:reportgen简易使用版本链接(密码: as84): https://pan.baidu.com/s/1dEPT72p

3.1 三行代码解决描述统计报告:

import report as rpt
# 数据编码和导入
# 300_300_0.xls是问卷星的按文本数据,300_300_2.xls是问卷星的按序号数据.
# 如果将他们放在“.\\data\\”中,则文件名可以缺省,即:`data,code=rpt.wenjuanxing()`
data,code=rpt.wenjuanxing(['300_300_0.xls','300_300_2.xls'])
# 描述统计报告生成
rpt.summary_chart(data,code,filename=u'调研报告初稿');

如上代码可以在.\out\文件夹下生成两个文件

  1. 调研报告初稿.pptx: 针对每个题目描述统计,支持单选题、多选题、排序题、矩阵单选题等
  2. 调研报告初稿.xlsx: 生成每个题目的统计数据,包括频数和占比

3.2 四行代码解决交叉统计报告

import report as rpt
# 数据编码和导入
data,code=rpt.wenjuanxing()
# 交叉统计报告生成(假设第一道题Q1是性别选择题)
save_dstyle=['FE','TGI','CHI']#自由选择需要保存的指标(FE:期望频数等)
rpt.cross_chart(data,code,cross_class='Q1',filename=u'性别差异分析',save_dstyle=save_dstyle);

如上代码可以在.\out\文件夹下生成5个文件

  1. 性别差异分析.pptx: 考虑每个题目在性别上的差异
  2. 性别差异分析_百分比.xlsx:
  3. 性别差异分析_FE.xlsx:
  4. 性别差异分析_TGI.xlsx:
  5. 性别差异分析_CHI.xlsx:

3.3 其他实用函数

import report as rpt
# 文件I/O
data=rpt.read_data(filename)
code=rpt.read_code(filename)
rpt.save_data(data,filename,code)
rpt.save_code(code,filename)
data,code=rpt.wenjuanxing(filepath)# 编码问卷星的数据
data,code=rpt.wenjuanwang(filepath)# 编码问卷网的数据
# 数据统计函数
t,t1=rpt.qtable(data,code,'Q1')# 单变量频数统计
t,t1=rpt.qtable(data,code,'Q1','Q2')# 双变量交叉统计
# 数据分析函数
cdata=rpt.contingency(fo)# 列联表分析
rpt.gof_test(fo,fe)# 拟合优度检验
rpt.chi2_test(fo,fe)# 卡方检验
rpt.binomial_interval(p,n)# 计算比率的置信区间
# 自动描述统计报告
'''
summary_qlist: 例如['Q1','Q2'],需要分析的问卷题目列表,缺省为code中所有的关键词
template: 例如{'path':'mytemplate.pptx','layouts':[1,2]}, 缺省为pptx自带的模板 '''
rpt.summary_chart(data,code,filename=u'描述统计报告', summary_qlist=None,\
max_column_chart=20,template=None) # 自动交叉统计报告
'''
cross_class: 需要交叉分析的题目,如:'Q1'
cross_qlist: 例如['Q1','Q2'],需要分析的问卷题目列表,缺省为code中所有的关键词
plt_dstyle: 绘制在ppt上使用的数据格式,缺省为百分比表,可以选择'TGI'等
save_dstyle: 需要保存的数据,例如:['TGI','FO','TWI','CHI']
template: 例如{'path':'mytemplate.pptx','layouts':[1,2]}, 缺省为pptx自带的模板 '''
rpt.cross_chart(data,code,cross_class,filename=u'交叉分析', cross_qlist=None,\
delclass=None,plt_dstyle=None,cross_order=None, significance_test=False, \
reverse_display=False,total_display=True,max_column_chart=20,save_dstyle=None,\
template=None):

END


若您觉得感兴趣,请点击“喜欢”;

若您用的舒服,请分享给其他人;

把时间还给洞察,且看PPT调研报告自动生成攻略的更多相关文章

  1. TSN(时间敏感网络)测试、仿真、分析平台应用攻略

    前言 在汽车领域,近几年车内网络通讯方式的变革诉求,期望能够有更高的数据传输速率,以及保证实时性的通讯方式引入.例如对于ADAS而言,传统的CAN总线已经远远不能满足其对通讯的要求,而基于车载以太网的 ...

  2. mysql取出现在的时间戳和时间时间戳转成人类看得懂的时间

    mysql取出现在的时间戳和时间时间戳转成人类看得懂的时间,我们在mysql里面他封装了一个内置的时间戳转化的函数,比如我们现在的时间戳是:1458536709 ,"%Y-%m-%d&quo ...

  3. Beta版本——用户试用与调研报告

    1 引言 1.1 系统概述 ​ 毕设导师智能分配系统是一个用来简化传统手工匹配繁琐操作的系统.本系统将学生报志愿.系负责人收集整理数据.相关人员进行手工分配.反馈选择结果等繁琐的操作转移到线上.把毕设 ...

  4. CVer想知道的都在这里了,一起分析下《中国计算机视觉人才调研报告》吧!

    最近闲来无事,老潘以一名普通算法工程师的角度,结合自身以及周围人的情况,理性也感性地分析一下极市平台前些天发布的2020年度中国计算机视觉人才调研报告. 以下的"计算机视觉人才"简 ...

  5. 结对开发:7-magic用户调研报告

    用户调研报告 班级   信1201-2班  学号   20122929     姓名  崔乐乐 项目名称:7-magic 调研时间: 2015/4/14 调研主题:7-magic游戏的用户需求度调研 ...

  6. 极客时间-左耳听风-程序员攻略-Linux系统、内存和网络

    程序员练级攻略:Linux系统.内存和网络 Linux 系统相关 Red Hat Enterprise Linux 文档 . Linux Insides ,GitHub 上的一个开源电子书,其中讲述了 ...

  7. 极客时间-左耳听风-程序员攻略-UI/UX设计

    程序员练级攻略:UI/UX设计 学习设计新手, 7 steps to become a UI/UX designer 学习设计的一些原则和套路,如配色.平衡.排版.一致性等. 用户体验的 4D 步骤- ...

  8. 密室经典逃脱N部--考验你的智力!据说全球没几人走出去!不要看攻略!【工作之余也来休闲一下】

    密室经典逃脱N部-考验你的智力!据说全球没几人走出去!不要看攻略![工作之余也来休闲一下] 更多经典逃脱尽在:点击进入更多经典逃脱 测试你的反映速度:躲避小红球 测试你对鼠标的控制力 叫美女起床 ↓↓ ...

  9. 三点经验:长时间运行函数需要随时发射信号报告进度,以及设置bool变量随时可以退出,每做一步操作必须及时记录和处理相关信息

    三点经验:长时间运行函数需要随时发射信号报告进度,以及设置bool变量随时可以退出,每做一步操作必须及时记录和处理相关信息 不能到最后一起处理,否则万一中间出错了,这个记录状态就全部都乱了.

随机推荐

  1. gridview里item是textView、Button单击事件相应,以及按下效果的取去除

    1.响应事件的区别: gridview的item是textView的时候,gridview的itemonclick事件可以正常相应,但是换了Button后不能,原因如下: public class B ...

  2. bzoj1468

    1468: Tree Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 1023  Solved: 532[Submit][Status][Discuss] ...

  3. spark在集群上运行

    1.spark在集群上运行应用的详细过程 (1)用户通过spark-submit脚本提交应用 (2)spark-submit脚本启动驱动器程序,调用用户定义的main()方法 (3)驱动器程序与集群管 ...

  4. swift button一些简单设置

    1,按钮的创建(1)按钮有下面四种类型: UIButtonType.ContactAdd:前面带“+”图标按钮,默认文字颜色为蓝色,有触摸时的高亮效果 UIButtonType.DetailDiscl ...

  5. pipe管道

    回顾: 进程间通信方式: 信号,管道 消息队列,共享内存,信号量 sokcet 信号: 本质就是软中断 signal(信号,函数指针); void func(int); kill(pid,signo) ...

  6. 为什么delphi控件前面都有t

    控件的类名都有一个T字, 它是Type的第一个字母. 比如按钮就是TButton. 但在Delphi的控件面板上的并不带T字, 比如就是Button. 如果你把它放在窗体上, 默认名字则成为Butto ...

  7. JDBC连接SQL Server 2005步骤详解

    一.设置SQL Server服务器:    1.“开始” → “程序” → “Microsoft SQL Server 2005” → “配置工具” → “SQL Server Configurati ...

  8. Windows Server 2008 R2防火墙出站规则

    出战规则指Windows Server 2008 R2系统访问外部的某台计算机通信数据流. 配置防火墙阻止Windows Server 2008 R2系统通过IE软件访问外部的网站服务器,阻止Wind ...

  9. ssh配置文件及问题解决

    一 ssh的配置文鉴模板 Host AAA User gitolite3 HostName IP地址 IdentityFile ~/.ssh/key 二 下载代码的方法 1 ssh git2 git ...

  10. 《JAVASCRIPT高级程序设计》表单基础知识和文本框脚本

    在HTML中,表单是由<form>元素来表示,在javascript中,表单对应的是HTMLFormElement类型,它具有一些独有的属性和方法: 一.表单基础知识 1.取得表单的方式 ...