把時間還給洞察,且看PPT調研報告自動生成攻略

文/JSong @2017.02.28python

在數據分析裏面有一句話是說,80%的時間要用於數據清洗和整理,而我以爲理想的狀態應該是把更多的把時間花在數據背後的洞察當中。去年11月在簡書佔了個坑,說要本身寫一個工具來解決,今天我來填坑了。git

一、解決方案概述

  1. 工具包:reportgen
  2. 項目地址:github,歡迎star 或者folk
  3. 軟件依賴:python3(兼容python2,但中文部分須要手動修改一個第三方包的2行代碼)
  4. 數據需求:調研數據,包括但不只限於問卷星原始數據、問卷網原始數據
  5. 主要功能1: 自動生成概述性質的報告(ppt格式,針對每道題目給出頻數統計,並繪製ppt圖表)
  6. 主要功能2:自動交叉分析,並生成報告(自動卡方檢驗、TGI、CHI指標計算、簡單結論提取等)

二、準備工做

依賴環境:github

  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, 請按照以下方式修改windows

  1. 打開文件 ".\pptx\chart\xmlwriter.py"
  2. 將大約1338行和1373行的 "escape(str(name))" 改成"escape(unicode(name))"

三、快速上手

【不懂或者不想學python3的請看這】函數

爲了方便更多人使用,我給windows用戶提供了一個很簡單的使用方法,你們下載項目地址中的文件夾reportgen[無python經驗的下載]便可,使用說明也在其中,很是簡單。這裏也提供一個百度雲盤地址:reportgen簡易使用版本連接(密碼: as84): https://pan.baidu.com/s/1dEPT72p工具

reportgen簡易使用教程

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個文件code

  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):

ENDxml


若您以爲感興趣,請點擊「喜歡」;
若您用的舒服,請分享給其餘人;blog

相關文章
相關標籤/搜索