原文:http://www.cnblogs.com/gasongjian/p/6481422.html
全文約 3821 字, 讀完可能需要 5 分鐘。
文/JSong @2017.02.28
在資料分析裡面有一句話是說, 80%的時間要用於資料清洗和整理, 而我覺得理想的狀態應該是把更多的把時間花在資料背後的洞察當中。
1、解決方案概述
工具包:https://github.com/gasongjian/reportgen
項目位址:https://github.com/gasongjian/, 歡迎 starfolk
軟體依賴:python3(相容python2, 但中文部分需要手動修改一個協力廠商包的2行代碼)
資料需求:調研資料, 包括但不僅限於 問卷星問卷網
主要功能1: 自動生成概述性質的報告
主要功能2:自動交叉分析, 並生成報告
2、準備工作
依賴環境:
python科學計算所需的包, 建議直接安裝anaconda
安裝協力廠商包 python-pptx
備註
py2.7版本的pptx包對中文支持有 bug, 請按照如下方式修改
打開檔 ".\pptx\chart\xmlwriter.py"
將大約1338行和1373行的 "escape(str(name))" 改為"escape(unicode(name))"
3、快速上手
【不懂或者不想學python3的請看這】
reportgen[無python經驗的下載]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\資料夾下生成兩個文件
調研報告初稿.pptx
調研報告初稿.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個檔
性別差異分析.pptx
性別差異分析_百分比.xlsx
性別差異分析_FE.xlsx
性別差異分析_TGI.xlsx
性別差異分析_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):
若您覺得感興趣, 請點擊"喜歡"; 若您用的舒服, 請分享給其他人;
題圖:pexels, CC0 授權。