文/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 三行代码解决描述统计报告:

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

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

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

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

  1. import report as rpt
  2. # 数据编码和导入
  3. data,code=rpt.wenjuanxing()
  4. # 交叉统计报告生成(假设第一道题Q1是性别选择题)
  5. save_dstyle=['FE','TGI','CHI']#自由选择需要保存的指标(FE:期望频数等)
  6. 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 其他实用函数

  1. import report as rpt
  2. # 文件I/O
  3. data=rpt.read_data(filename)
  4. code=rpt.read_code(filename)
  5. rpt.save_data(data,filename,code)
  6. rpt.save_code(code,filename)
  7. data,code=rpt.wenjuanxing(filepath)# 编码问卷星的数据
  8. data,code=rpt.wenjuanwang(filepath)# 编码问卷网的数据
  9. # 数据统计函数
  10. t,t1=rpt.qtable(data,code,'Q1')# 单变量频数统计
  11. t,t1=rpt.qtable(data,code,'Q1','Q2')# 双变量交叉统计
  12. # 数据分析函数
  13. cdata=rpt.contingency(fo)# 列联表分析
  14. rpt.gof_test(fo,fe)# 拟合优度检验
  15. rpt.chi2_test(fo,fe)# 卡方检验
  16. rpt.binomial_interval(p,n)# 计算比率的置信区间
  17. # 自动描述统计报告
  18. '''
  19. summary_qlist: 例如['Q1','Q2'],需要分析的问卷题目列表,缺省为code中所有的关键词
  20. template: 例如{'path':'mytemplate.pptx','layouts':[1,2]}, 缺省为pptx自带的模板
  21. '''
  22. rpt.summary_chart(data,code,filename=u'描述统计报告', summary_qlist=None,\
  23. max_column_chart=20,template=None)
  24. # 自动交叉统计报告
  25. '''
  26. cross_class: 需要交叉分析的题目,如:'Q1'
  27. cross_qlist: 例如['Q1','Q2'],需要分析的问卷题目列表,缺省为code中所有的关键词
  28. plt_dstyle: 绘制在ppt上使用的数据格式,缺省为百分比表,可以选择'TGI'等
  29. save_dstyle: 需要保存的数据,例如:['TGI','FO','TWI','CHI']
  30. template: 例如{'path':'mytemplate.pptx','layouts':[1,2]}, 缺省为pptx自带的模板
  31. '''
  32. rpt.cross_chart(data,code,cross_class,filename=u'交叉分析', cross_qlist=None,\
  33. delclass=None,plt_dstyle=None,cross_order=None, significance_test=False, \
  34. reverse_display=False,total_display=True,max_column_chart=20,save_dstyle=None,\
  35. 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. Mybatis学习(6)动态加载、一二级缓存

    一.动态加载: resultMap可以实现高级映射(使用association.collection实现一对一及一对多映射),association.collection具备延迟加载功能. 需求: 如 ...

  2. Oracle用户管理和角色管理

    原博:http://liwx.iteye.com/blog/1182251 一.创建用户的Profile文件 SQL> create profile student limit // stude ...

  3. ios framework 开发实战 之 参考

    WWDC2014之iOS使用动态库 iOS开发——创建你自己的Framework 使用CocoaPods开发并打包静态库 iOS Framework 和CocoaPods TDD的iOS开发初步以及K ...

  4. Nginx基本配置、性能优化指南

    大多数的Nginx安装指南告诉你如下基础知识——通过apt-get安装,修改这里或那里的几行配置,好了,你已经有了一个Web服务器了!而且,在大多数情况下,一个常规安装的nginx对你的网站来说已经能 ...

  5. python中使用urllib2伪造HTTP报头的2个方法

    在采集网页信息的时候,经常需要伪造报头来实现采集脚本的有效执行 下面,我们将使用urllib2的header部分伪造报头来实现采集信息 方法1. ? 1 2 3 4 5 6 7 8 9 10 11 1 ...

  6. 在centos 6.5 x64中安装 spark-1.5.1

    以下内容参考:http://blog.csdn.net/lovehuangjiaju/article/details/48494737 1.解压安装文件,设置环境变量 这里我们使用的安装文件是已经编译 ...

  7. eclipse使用egit提交代码报错

    在eclipse上使用插件egit同步代码时出现如下错误 解决办法: 开eclipse中的windows-->Preferences-->Team-->Git-->Config ...

  8. jQuery插入节点(移动节点)

    jQuery插入节点(移动节点) <%@ page language="java" import="java.util.*" pageEncoding=& ...

  9. C# backgroundworker使用方法

    # BackgroundWorker 控件的几个实例(C# backgroundworker使用方法): 在 WinForms 中,有时要执行耗时的操作,在该操作未完成之前操作用户界面,会导致用户界面 ...

  10. easyUI draggable组件使用

    easyUI draggable组件使用: <!DOCTYPE html> <html lang="en"> <head> <meta c ...