原标题:实战 | Python自动生成PPT分析报告
在数据分析里面有一句话是说,80%的时间要用于数据清洗和整理,而我觉得理想的状态应该是把更多的把时间花在数据背后的洞察当中。去年11月在简书占了个坑,说要自己写一个工具来解决,今天我来填坑了。
1、解决方案概述
工具包:https://github.com/gasongjian/reportgen
项目地址:https://github.com/gasongjian/,欢迎 star或者 folk
软件依赖:python3(兼容python2,但中文部分需要手动修改一个第三方包的2行代码)
数据需求:调研数据,包括但不仅限于 问卷星原始数据、 问卷网原始数据
主要功能1: 自动生成概述性质的报告(ppt格式,针对每道题目给出频数统计,并绘制ppt图表)
主要功能2:自动交叉分析,并生成报告(自动卡方检验、TGI、CHI指标计算、简单结论提取等)2、准备工作
依赖环境:
python科学计算所需的包,建议直接安装anaconda(强烈推荐使用python3版本)
安装第三方包 python-pptx: 在cmd中输入:"pip install python-pptx"
安装report包: 下载reportreport.py, 然后放在工作目录即可(省心点可以直接扔进 C:Anaconda3Libsite-packages 中,这样在任何地方都能使用该工具包啦)备注
py2.7版本的pptx包对中文支持有 bug, 请按照如下方式修改
打开文件 ".pptxchartxmlwriter.py"
将大约1338行和1373行的 "escape(str(name))" 改为"escape(unicode(name))"3、快速上手
【不懂或者不想学python3的请看这】
为了方便更多人使用,我给windows用户提供了一个很简单的使用方法,大家下载项目地址中的文件夹 reportgen[无python经验的下载]即可,使用说明也在其中,非常简单。这里也提供一个百度云盘地址:reportgen简易使用版本链接(密码:as84):
3.1 三行代码解决描述统计报告:
importreportasrpt
# 数据编码和导入
# 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文件夹下生成两个文件
调研报告初稿.pptx: 针对每个题目描述统计,支持单选题、多选题、排序题、矩阵单选题等
调研报告初稿.xlsx: 生成每个题目的统计数据,包括频数和占比3.2 四行代码解决交叉统计报告
importreportasrpt
# 数据编码和导入
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个文件
性别差异分析.pptx: 考虑每个题目在性别上的差异
性别差异分析_百分比.xlsx:
性别差异分析_FE.xlsx:
性别差异分析_TGI.xlsx:
性别差异分析_CHI.xlsx:
3.3 其他实用函数
importreportasrpt
# 文件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):