Python 数据分析实战:4 个经典项目案例

前言
数据分析是大数据技术的重要应用领域。本文将基于4个典型实战案例,系统讲解Python在数据挖掘四大核心任务中的应用:关联规则分析、分类预测、回归建模和聚类分析。案例涵盖电影类型关联挖掘、心脏病诊断预测、大学录取率分析和NBA球员聚类等实际场景,完整呈现pandas数据处理、scikit-learn模型构建以及matplotlib可视化等关键技术要点。特别适合数据分析初学者作为实践参考。

项目一:电影类型关联规则挖掘(Apriori算法)

项目目标:
通过挖掘电影类型间的潜在关联关系,发现强关联规则,为电影推荐和类型组合决策提供数据支持。

实施步骤:

  • 读取电影数据文件
  • 过滤无类型标签的记录
  • 将类型字符串转换为列表格式

代码实现:

import pandas as pd from collections import defaultdict # 数据加载与清洗 df = pd.read_csv('movies.csv') df = df[df['genres']!='(no genres listed)']# 过滤无效记录 df['genres_list']= df['genres'].apply(lambda x: x.split('|'))# 类型转换 total_movies =len(df)# 统计有效电影数量

频繁项集挖掘流程:

  1. 计算各单项类型的支持度,筛选出满足最小支持度阈值(0.02)的频繁单项集
  2. 生成类型组合对,计算项集支持度,筛选出频繁二项集
  3. 关联规则生成:设置最小置信度(0.3),计算置信度和提升度(Lift>1表示正相关),最终筛选出强关联规则

核心分析结果:

Top10 强关联规则:

前项后项支持度置信度提升度
AnimationChildren0.03110.49437.2265
ChildrenFantasy0.02150.31483.9226
MysteryThriller0.03650.61783.1666

关键发现:

  1. **动画类型(Animation)与儿童类型(Children)**展现出最强的关联性,提升度高达7.23。数据分析显示,动画电影有49.43%的概率属于儿童片类型。
  2. **悬疑片(Mystery)与惊悚片(Thriller)**的组合具有最高的置信度(61.78%),这与电影类型搭配的市场惯例高度吻合。
  3. **动作片(Action)**与冒险片(Adventure)、惊悚片(Thriller)之间均存在显著的正相关关系。

项目二:心脏病诊断分类预测

项目目标
基于患者生理指标数据构建分类模型,预测心脏病患病风险,并对比不同算法的性能表现。

数据处理与建模流程

数据预处理

  • 缺失值处理:将"?"替换为NaN,采用中位数填充
  • 数据类型转换:确保所有列转换为数值型
  • 目标变量处理:进行二值化转换(>0为1,否则为0)
import pandas as pd import numpy as np from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler from sklearn.metrics import accuracy_score, classification_report # 数据加载与清洗 data = pd.read_csv('Heart_Disease.csv') data.replace('?', np.nan, inplace=True)for col in data.columns: data[col]= pd.to_numeric(data[col], errors='coerce')# 缺失值填充from sklearn.impute import SimpleImputer imputer = SimpleImputer(strategy='median') data = pd.DataFrame(imputer.fit_transform(data), columns=data.columns) data['target']= data['target'].apply(lambda x:1if x >0else0)

特征工程

  • 划分特征集与目标变量
  • 数据集拆分(训练集70%,测试集30%)
  • 特征标准化处理

模型构建
实现并对比三种分类算法:

  • 逻辑回归
  • 决策树
  • 随机森林
# 逻辑回归 lr = LogisticRegression(max_iter=1000, random_state=42) lr.fit(X_train_scaled, y_train)# 决策树 dt = DecisionTreeClassifier(max_depth=5, random_state=42) dt.fit(X_train, y_train)# 随机森林 rf = RandomForestClassifier(n_estimators=100, random_state=42) rf.fit(X_train, y_train)

模型性能对比

模型准确率
逻辑回归0.8462
决策树0.7143
随机森林0.8462

最优模型(逻辑回归)评估报告

  • 精确率(Precision):
    • 阴性:0.89
    • 阳性:0.81
  • 召回率(Recall):
    • 阴性:0.81
    • 阳性:0.88
  • F1分数:
    • 阴性:0.85
    • 阳性:0.84

关键结论

  1. 逻辑回归与随机森林表现最佳,准确率均达到84.62%
  2. 模型对阳性病例(患病)的识别能力突出(召回率88%),适合用于初步筛查
  3. 决策树性能相对欠佳,可能需通过调整参数复杂度来优化

项目三:大学录取率预测模型
项目目标

基于申请者的GRE、TOEFL等标准化考试成绩,构建线性回归模型预测录取概率。

核心实现步骤

  1. 数据预处理
    • 读取录取预测数据集
    • 移除无关字段(序列号)
    • 规范化列名格式
import pandas as pd import numpy as np import matplotlib.pyplot as plt from sklearn.model_selection import train_test_split from sklearn.linear_model import LinearRegression from sklearn.preprocessing import StandardScaler from sklearn.metrics import mean_squared_error, r2_score # 中文显示配置 plt.rcParams['font.sans-serif']=['SimHei'] plt.rcParams['axes.unicode_minus']=False# 数据加载与清洗 data = pd.read_csv('Admission_Predict.csv') data = data.drop('Serial No.', axis=1) data.columns = data.columns.str.strip()
  1. 模型构建
    • 划分训练集/测试集(80%/20%)
    • 标准化特征数据
    • 训练线性回归模型
  2. 模型评估
    • 计算MSE和R²评估指标
    • 可视化真实值与预测值对比
# 模型预测与评估 y_test_pred = lr_model.predict(X_test_scaled) mse = mean_squared_error(y_test, y_test_pred) r2 = r2_score(y_test, y_test_pred)print(f"均方误差(MSE):{mse:.4f}")print(f"决定系数(R²):{r2:.4f}")# 结果可视化 plt.figure(figsize=(6,4)) plt.scatter(y_test, y_test_pred, alpha=0.6) plt.plot([y_test.min(), y_test.max()],[y_test.min(), y_test.max()],'r--') plt.xlabel('真实录取率') plt.ylabel('预测录取率') plt.title('真实值 vs 预测值对比') plt.grid(alpha=0.3) plt.show()

模型表现

  • 均方误差:0.0047(理想范围)
  • 决定系数:0.7956(解释力良好)

预测案例
申请者档案:

  • GRE 325 | TOEFL 110 | GPA 8.9 | 有研究经历
    预测录取概率:80.09%

核心发现

  1. 模型预测效果良好(R²=79.56%),预测值与实际值分布吻合
  2. 关键影响因素:
    • 标准化考试成绩(GRE/TOEFL)
    • 本科GPA
    • 科研经历

项目四:NBA球员聚类分析

项目目标

基于球员比赛统计数据,运用聚类算法对NBA球员进行分类,挖掘不同类型球员的特征表现。

实现流程

  1. 数据预处理
    • 处理重复球员数据(保留TOT汇总记录)
    • 缺失值处理:
      • 命中率相关字段填充0
      • 其他数值型字段填充均值
import pandas as pd import numpy as np from sklearn.cluster import KMeans, AgglomerativeClustering, DBSCAN from sklearn.preprocessing import StandardScaler from sklearn.metrics import silhouette_score, davies_bouldin_score # 数据读取与预处理 df = pd.read_csv('NBA_Player_Statistics.csv')# 处理重复球员if'Tm'in df.columns: df['is_tot']= df['Tm']=='TOT' df = df.sort_values(['Player','is_tot'], ascending=[True,False]) df = df.drop_duplicates('Player', keep='first').drop('is_tot', axis=1)# 缺失值填充 fill_0_cols =['FG%','3P%','FT%']for col in fill_0_cols:if col in df.columns: df[col].fillna(0, inplace=True) numeric_cols = df.select_dtypes(include=np.number).columns for col in numeric_cols: df[col].fillna(df[col].mean(), inplace=True)
  1. 特征选择
    • 选取10个核心比赛指标(上场时间、得分、命中率、助攻、篮板等)
  2. 聚类算法实现
    • 对比K-Means、层次聚类、DBSCAN三种算法
  3. 聚类评估
    • 使用轮廓系数(越大越好)和DB指数(越小越好)评估效果

算法性能对比

算法轮廓系数DB指数
K-Means0.20941.3460
层次聚类0.19691.3129
DBSCAN0.20000.8222

K-Means聚类结果(5类球员)

类别上场时间得分命中率三分命中率助攻篮板特点总结
024.6411.340.580.201.517.60内线型球员,篮板突出
126.5911.730.460.372.753.96外线射手,三分能力强
26.781.910.310.180.661.06边缘球员,出场时间少
333.9021.460.480.355.825.89核心球员,全能表现
414.085.330.480.341.032.40替补球员,角色明确

关键结论

  • DBSCAN的DB指数最低(0.8222),聚类紧凑性最佳
  • K-Means轮廓系数最高,聚类分离度最优
  • NBA球员可分为5类:核心球员、内线球员、外线射手、替补球员和边缘球员
  • 核心球员各项指标表现突出,上场时间最长

技术栈总结

  • 数据处理:pandas、numpy
  • 建模算法:scikit-learn
  • 可视化:matplotlib
  • 数据挖掘:关联规则挖掘、聚类分析

项目收获

  1. 掌握数据分析全流程:数据预处理→特征工程→模型构建→评估优化
  2. 理解算法适用场景:
    • 关联规则:变量关系挖掘
    • 分类算法:离散标签预测
    • 回归分析:连续值预测
    • 聚类分析:无监督分组
  3. 掌握多种模型评估指标:轮廓系数、DB指数、准确率、R²等

改进方向

  1. 优化特征工程:增加特征交叉、特征选择
  2. 超参数调优:使用GridSearchCV优化参数
  3. 算法扩展:尝试神经网络等深度学习模型
  4. 增强可视化:PCA降维展示聚类结果,丰富数据洞察图表

结语

数据分析的核心价值在于从海量原始数据中提炼出可落地的商业洞察与科学规律。本文通过四个典型案例,系统展示了数据挖掘的四大核心任务:

  1. 关联规则挖掘(电影类型关联分析):
    • 应用Apriori算法揭示"看过A类电影的观众偏好B类"的关联规则
    • 典型场景:视频推荐系统、商品组合营销
  2. 分类预测(心脏病诊断预测):
    • 采用逻辑回归、随机森林等算法构建疾病风险评估模型
    • 核心指标:准确率、召回率、AUC值
    • 医疗应用:早期筛查、个性化治疗
  3. 回归分析(大学录取率预测):
    • 建立多元线性回归模型量化影响因素
    • 可解释性分析:标准化系数对比、P值检验
    • 教育应用:招生政策优化、资源调配
  4. 聚类分析(NBA球员特征聚类):
    • 运用K-means算法识别球员技术特征群体
    • 关键处理:数据标准化、PCA降维
    • 体育应用:人才选拔、战术制定

这些案例彰显了Python数据分析生态的强大优势:

  • 数据处理:pandas高效完成数据清洗与转换
  • 特征工程:scikit-learn预处理工具实现特征优化
  • 建模分析:scikit-learn统一API支持快速迭代
  • 可视化:matplotlib/seaborn生成专业图表
  • 部署应用:Flask/Django实现分析结果服务化

从数据获取到模型部署,这套完整分析流程可有效解决商业智能、医疗健康、教育管理、体育分析等领域的实际问题。随着数据规模扩大和技术进步,数据挖掘将在更多场景创造实际价值。

Read more

Rembg WebUI响应式设计:多设备适配方案

Rembg WebUI响应式设计:多设备适配方案 1. 智能万能抠图 - Rembg 在图像处理与内容创作日益普及的今天,自动去背景技术已成为设计师、电商运营、AI开发者不可或缺的工具。传统手动抠图效率低、成本高,而基于深度学习的智能抠图方案正逐步成为主流。其中,Rembg 凭借其开源、高精度和通用性强的特点,迅速在开发者社区中脱颖而出。 Rembg 的核心是 U²-Net(U-square Net) 模型,一种专为显著性目标检测设计的嵌套 U-Net 架构。该模型通过双层嵌套残差模块,在不依赖大量标注数据的前提下,实现对图像主体的精准识别与边缘提取。无论是人像发丝、宠物毛发,还是复杂轮廓的商品,Rembg 都能生成高质量的透明 PNG 图像,满足工业级应用需求。 更重要的是,Rembg 支持本地部署、无需联网验证权限,并可集成 ONNX 推理引擎进行 CPU 优化,极大提升了服务的稳定性与可移植性。

By Ne0inhk

前端人拿不到offer,九成是不知道这个新风向

今年大部分互联网公司面试的题目已经开始小部分八股文,大部分场景题了,公司需要的不仅是知识扎实,而且招进来就能上手项目的面试者… 2026最新高频场景题 * 1. 请求失败会弹出一个toast,如何保证批量请求失败,只弹出一个toast * 2. 如何减少项目里面if-else * 3. babel-runtime 作用是啥 * 4. 如何实现预览PDF文件 * 5. 如何在划词选择的文本上添加右键菜单(划词:鼠标滑动选择一组字符,对组字符进行操作) * 6. 富文本里面,是如何做到划词的(鼠标滑动选择一组字符,对组字符进行操作)? * 7. 如何做好前端监控方案 * 8. 如何标准化处理线上用户反馈的问题 * 9. px如何转为rem * 10. 浏览器有同源策略,但是为何 cdn 请求资源的时候不会有 跨域限制 * 11. cookie可以实现不同域共享吗 * 12. axios是否可以取消请求 * 13. 前端如何实现折叠面板效果? * 14. dom里面,如何判定a元素是否是b元素的子元 * 15. 判断一个对象是否为空,包含了其原型链上是否有自

By Ne0inhk

1Panel+Ollama+WebUI:打造本地AI模型的完整指南(附Gemini插件教程)

1Panel、Ollama与Open WebUI:构建你的私有化AI模型应用平台实战 在AI技术日益普及的今天,许多开发者和技术爱好者不再满足于仅仅调用云端API。他们渴望在本地环境中部署、管理和实验自己的AI模型,无论是出于数据隐私的考量、网络环境的限制,还是纯粹对技术探索的热爱。构建一个稳定、易用且可扩展的本地AI平台,成为了一个极具吸引力的目标。本文将为你呈现一套完整的解决方案,它并非简单的工具堆砌,而是一个经过精心设计的、以1Panel为控制中枢,Ollama为模型引擎,Open WebUI为交互前端的集成化平台。我们将深入探讨如何将它们无缝衔接,并重点解锁通过插件系统集成如Gemini等第三方模型的高级玩法,让你在本地也能拥有媲美云端服务的AI应用体验。 1. 平台基石:1Panel与OpenResty的部署与配置 构建任何复杂应用,一个稳定且管理便捷的基础环境是首要前提。1Panel作为一个现代化的Linux服务器运维管理面板,以其直观的Web界面和容器化应用管理能力,极大地简化了服务器运维工作。而OpenResty,作为Nginx的增强版本,集成了LuaJIT,为

By Ne0inhk