python 生成 pptx 分析报告的工具包:reportgen( 二 )


clfs={'LogisticRegression':LogisticRegressionCV(),\'RandomForest':RandomForestClassifier(),'GradientBoosting':GradientBoostingClassifier()}y_preds,y_probas={},{}for clf in clfs: clfs[clf].fit(X, y) y_preds[clf] =clfs[clf].predict(X) y_probas[clf] = clfs[clf].predict_proba(X)[:,1] # 函数会输出一个或多个二分类模型的性能评估结果,包含ROC曲线、PR曲线、密度函数、auc等统计指标、混淆矩阵等 models_report,conf_matrix=rpt.ClassifierReport(y,y_preds,y_probas) print(models_report)
3、问卷型数据分析
问卷数据涉及到各种题型,包括单选题、多选题、填空题、矩阵多选题、排序题等等 。不管是
频数统计还是交叉分析,单选题都很好处理, 但其他题目就相对复杂的多,比如单选题和多选题
之间的交叉统计,多选题和多选题之间的交叉统计等 。
为了能使用统一的函数进行常规分析,本工具包使用专门针对问卷设计的数据类型(或者说编码方式) 。在这种类型中,每一份问卷都有两个文件,data 和 code ,它们的含义如下:
1). data:按选项序号编码的数据(csv、xlsx等都可以) 。具体的示例如下:
3_A4
1
1
1
0
1
0
1
2
0
0

python 生成 pptx 分析报告的工具包:reportgen

文章插图
1
0
1
1
1
0
0
1
2
3
0
1
1
0
1
2
1
0
1
0
1
4
0
1
0
1
2
2
1
0
1
0
1
1
0
1
0
1
2
2
1
0
1
0
其中 Q1、Q2是单选题,在Q1中,1代表男,2代表女 。Q3是多选题,一共有四个选项,分别代表 Q3_A1:'旅游',Q3_A2:'健身',Q3_A3:'艺术',Q3_A4:'养生'. 多选题常用这种01矩阵存储 。
2). code:编码文件( json格式,就是 中的字典类型), 给定每道题的题号、选项编码等信息 。
每一个题目都有如下字段:
具体示例如下:
code={'Q1':{'content':'性别','code':{ 1:'男', 2:'女' } 'qtype':'单选题', 'qlist':['Q1'] }, 'Q2':{ 'content':'年龄', 'code':{ 1:'17岁以下', 2:'18-25岁', 3:'26-35岁', 4:'36-46岁' }, 'qtype':'单选题', 'qlist':['Q2'] }, 'Q3':{ 'content':'爱好', 'code':{ 'Q3_A1':'旅游', 'Q3_A2':'健身', 'Q3_A3':'艺术', 'Q3_A4':'养生' }, 'qtype':'多选题', 'qlist':['Q3_A1','Q3_A2','Q3_A3','Q3_A4'] } }
该工具包包含如下函数:
文件 IO数据处理统计检验等数据分析统计可视化实践
import reportgen.questionnaire as ques# 导入问卷星数据datapath=['.\\datasets\\[问卷星数据]800_800_0.xls','.\\datasets\\[问卷星数据]800_800_2.xls'] data,code=ques.wenjuanxing(datapath) # 导出 ques.save_data(data,filename='data.xlsx') ques.save_data(data,filename='data.xlsx',code=code)# 会将选项编码替换成文本 ques.save_code(code,filename='code.xlsx') # 对单变量进行统计分析 result=ques.qtable(data,code,'Q1') print(result['fo']) # 两个变量的交叉分析 result=ques.qtable(data,code,'Q1','Q2') print(result['fop']) # 聚类分析,会在原数据上添加一列,类别题 #ques.cluster(data,code,'态度题') # 在.\\out\\下 生成 pptx文件 ques.summary_chart(data,code,filename='整体统计报告'); ques.cross_chart(data,code,cross_class='Q4',filename='交叉分析报告_年龄'); ques.scorpion(data,code,filename='详细分析数据') ques.onekey_gen(data,code,filename='reportgen 自动生成报告');