别再只盯着KMO了!因子分析后,用Python给综合得分排个名(附代码)

张开发
2026/4/21 20:38:41 15 分钟阅读

分享文章

别再只盯着KMO了!因子分析后,用Python给综合得分排个名(附代码)
因子分析实战用Python实现综合得分排名与业务洞察当你完成因子分析并得到综合得分后真正的业务价值挖掘才刚刚开始。综合得分就像一把钥匙能帮你打开数据中的宝藏——无论是客户分层、绩效评估还是竞争力分析。本文将带你用Python将SPSSAU生成的因子分析结果转化为直观可操作的业务洞察。1. 从SPSSAU到Python的数据桥梁完成因子分析后SPSSAU会生成包含因子得分和综合得分的全新数据集。这些数据需要妥善导出才能进入Python的分析流程。在SPSSAU界面右上角的我的数据中点击下载按钮即可获取包含所有原始数据和计算结果的CSV文件。提示下载时建议勾选包含变量标签选项这样在Python中处理时能更好地理解每个字段的含义。检查下载的数据文件你会看到类似这样的结构ID,收入,满意度,忠诚度,...,FactorScore1,FactorScore2,CompScore123 1,5000,4.2,3.8,...,0.76,-0.23,0.82 2,4200,3.9,4.1,...,-0.12,0.45,0.312. Python环境准备与数据导入在开始分析前确保你的Python环境已安装以下核心库pip install pandas matplotlib seaborn numpy这些库构成了我们分析的基础工具链pandas数据操作的瑞士军刀matplotlib/seaborn可视化利器numpy数值计算基础导入数据只需一行代码import pandas as pd # 替换为你的实际文件路径 factor_data pd.read_csv(path/to/your/factor_scores.csv, encodingutf-8)检查数据导入是否成功print(factor_data.head()) # 查看前几行 print(factor_data.info()) # 查看数据结构3. 综合得分的深度解析与排名综合得分是各因子得分的加权汇总反映了每个样本在整体维度上的表现。我们可以用多种方式挖掘其中的价值。3.1 基础排名分析最简单的应用就是直接排序# 按综合得分降序排列 ranked_data factor_data.sort_values(byCompScore123, ascendingFalse) # 添加排名列 ranked_data[Rank] range(1, len(ranked_data)1) # 查看TOP10 print(ranked_data.head(10)[[ID, CompScore123, Rank]])3.2 分组分析将样本分为高、中、低三组能提供更多业务视角# 定义分组边界 high_cutoff ranked_data[CompScore123].quantile(0.8) low_cutoff ranked_data[CompScore123].quantile(0.2) # 创建分组标签 conditions [ (ranked_data[CompScore123] high_cutoff), (ranked_data[CompScore123] low_cutoff) ] choices [高分组, 低分组] ranked_data[Segment] np.select(conditions, choices, default中分组) # 统计各组比例 segment_dist ranked_data[Segment].value_counts(normalizeTrue) print(segment_dist)3.3 与其他变量的交叉分析综合得分真正的价值在于与其他业务指标的关联分析import seaborn as sns import matplotlib.pyplot as plt # 绘制综合得分与收入的关系 plt.figure(figsize(10,6)) sns.scatterplot(dataranked_data, xCompScore123, y收入, hueSegment) plt.title(综合得分与收入分布) plt.show()4. 高级可视化让数据讲故事好的可视化能让分析结果一目了然。以下是几种有效的展示方式4.1 排名条形图# 取TOP20和最后20名做对比 top_bottom pd.concat([ranked_data.head(20), ranked_data.tail(20)]) plt.figure(figsize(12,8)) sns.barplot(datatop_bottom, xCompScore123, yID, hueSegment, dodgeFalse) plt.title(综合得分TOP20与最后20名对比) plt.xlabel(综合得分) plt.ylabel(样本ID) plt.show()4.2 雷达图展示多因子表现from math import pi # 准备数据 categories [FactorScore1,FactorScore2,FactorScore3,FactorScore4] N len(categories) # 计算各分组的平均因子得分 group_means ranked_data.groupby(Segment)[categories].mean() # 绘制雷达图 fig plt.figure(figsize(8,8)) ax fig.add_subplot(111, polarTrue) for segment in group_means.index: values group_means.loc[segment].values.flatten().tolist() values values[:1] # 闭合图形 angles [n/float(N)*2*pi for n in range(N)] angles angles[:1] ax.plot(angles, values, labelsegment) ax.fill(angles, values, alpha0.1) plt.xticks(angles[:-1], categories) plt.legend(locupper right) plt.title(不同组别的因子表现对比) plt.show()5. 业务应用场景拓展综合得分的应用远不止简单的排名。以下是几个实战场景5.1 客户价值分层模型结合RFM模型我们可以创建更精细的客户分群# 假设我们已有RFM数据 ranked_data[Value_Group] pd.qcut(ranked_data[CompScore123], q[0, 0.2, 0.5, 0.8, 1], labels[低价值, 中低价值, 中高价值, 高价值]) # 交叉分析 cross_tab pd.crosstab(ranked_data[Value_Group], ranked_data[Segment]) print(cross_tab)5.2 绩效评估系统在员工绩效评估中因子分析可以消除主观偏差# 计算部门绩效排名 dept_performance ranked_data.groupby(部门)[CompScore123].agg([mean,count]) dept_performance dept_performance.sort_values(mean, ascendingFalse) # 可视化 plt.figure(figsize(10,6)) sns.barplot(datadept_performance.reset_index(), xmean, y部门, colorsteelblue) plt.title(各部门平均综合绩效得分) plt.xlabel(平均得分) plt.ylabel() plt.show()5.3 产品竞争力分析对产品多个维度的评分进行因子分析后可以识别产品优劣势# 假设我们已计算产品竞争力综合得分 product_rank ranked_data.groupby(产品类别).agg({ CompScore123: mean, 收入: sum }).sort_values(CompScore123, ascendingFalse) # 创建竞争力-收入矩阵 plt.figure(figsize(10,8)) sns.scatterplot(dataproduct_rank, xCompScore123, y收入, size收入, sizes(100,1000), hueproduct_rank.index) plt.axvline(xproduct_rank[CompScore123].median(), colorred, linestyle--) plt.axhline(yproduct_rank[收入].median(), colorred, linestyle--) plt.title(产品竞争力与收入关系) plt.xlabel(综合竞争力得分) plt.ylabel(总收入) plt.legend(bbox_to_anchor(1.05,1)) plt.show()6. 自动化报告生成对于定期分析可以创建自动化报告生成流程from datetime import datetime def generate_factor_report(df, comp_score_colCompScore123): report {} # 基础统计 report[生成日期] datetime.now().strftime(%Y-%m-%d) report[样本量] len(df) report[平均得分] df[comp_score_col].mean() report[得分标准差] df[comp_score_col].std() # 分组统计 df[得分分组] pd.qcut(df[comp_score_col], 5, labels[最低,较低,中等,较高,最高]) group_stats df.groupby(得分分组)[comp_score_col].agg([count,mean,std]) report[分组统计] group_stats.to_dict() # 与其他关键指标的相关性 if 收入 in df.columns: report[与收入相关性] df[[comp_score_col,收入]].corr().iloc[0,1] return report # 生成报告 analysis_report generate_factor_report(ranked_data) print(analysis_report)7. 注意事项与常见问题在实际应用中有几个关键点需要注意分数解释综合得分是相对值而非绝对值。0分不代表表现为零而是样本在整体中的平均水平。缺失值处理在导出数据前确保SPSSAU中已妥善处理缺失值否则会影响Python中的分析结果。权重验证如果使用自定义权重计算综合得分建议检查权重分配的合理性。业务对接技术分析需要与业务知识结合。例如客户满意度因子得分高但收入低的群体可能代表潜在的高价值客户。# 检查潜在高价值客户 potential_clients ranked_data[ (ranked_data[FactorScore1] 0.8) # 高满意度 (ranked_data[收入] ranked_data[收入].median()) # 低收入 ] print(f发现{len(potential_clients)}个潜在高价值客户)8. 扩展分析思路除了基础排名还可以尝试以下分析方向时间趋势分析如果有时间维度数据可以观察综合得分的变化趋势聚类分析结合因子得分进行客户细分预测模型使用因子得分作为特征预测业务结果# 示例使用因子得分进行聚类 from sklearn.cluster import KMeans # 选择因子得分列 X ranked_data[[FactorScore1,FactorScore2,FactorScore3]] # 肘部法则确定最佳聚类数 inertia [] for k in range(1,10): kmeans KMeans(n_clustersk, random_state42).fit(X) inertia.append(kmeans.inertia_) plt.plot(range(1,10), inertia, markero) plt.xlabel(聚类数量) plt.ylabel(SSE) plt.title(肘部法则) plt.show()在完成这些分析后你会对数据有更立体的理解能够为业务决策提供更全面的支持。记住因子分析不是终点而是业务洞察的起点。

更多文章