Python3数据分析与挖掘建模(11)复合分析-分组分析与实现示例

news2025/4/18 18:18:24

1. 分组分析

1.1 概述

分组与钻取是数据分析中常用的技术,用于对数据进行聚合和细分分析。它可以帮助我们从整体数据中获取特定维度的汇总信息,并进一步钻取到更详细的子集数据中进行深入分析。

分组(Grouping)是指根据某个或多个特征将数据集分成多个组或类别。通过对数据进行分组,我们可以计算每个组的统计量(如平均值、总和、计数等),并进行比较、汇总或进一步分析。

钻取(Drilling)是指在分组的基础上,进一步细分数据集,以便更深入地了解特定组或类别的情况。通过钻取操作,我们可以选择特定的分组或类别,并对其进行详细分析,例如计算其子组的统计量、绘制子组的图表等。

在实际应用中,分组与钻取常常结合使用。首先,我们根据某个或多个特征将数据集进行分组,得到分组的汇总统计量。然后,我们可以选择特定的分组,进行钻取操作,深入分析该分组的子集数据,以获取更详细的信息和洞察。

例如,假设我们有一个销售数据集,包含产品名称、销售额、销售地区等信息。我们可以首先根据地区进行分组,计算每个地区的总销售额和平均销售额。然后,我们可以选择某个特定地区,钻取到该地区的子集数据,进一步分析该地区的销售趋势、热门产品等详细信息。

分组与钻取是数据分析中非常灵活和强大的工具,可以帮助我们从整体数据中提取有价值的信息,并深入挖掘数据的细节。它在数据汇总、对比、筛选和洞察等方面具有广泛的应用。

1.2 向上与向下钻取

向上钻取(Drill-Up)和向下钻取(Drill-Down)是在数据分析中进行层级切换的操作。

向上钻取(Drill-Up)是指从较低层级的数据汇总层级切换到较高层级,以获取更广泛的视角和总体概述。通过向上钻取,我们可以从细分的数据汇总层级上升到更高级别的聚合,获取更广泛的汇总信息。这有助于我们了解数据的整体趋势、总体性能等。

举例来说,假设我们有一个销售数据集,包含产品的销售额按年、季度和月份进行了分组汇总。如果我们当前处于月份级别的细分数据,通过向上钻取,我们可以切换到季度级别或年度级别,以获取更高层级的销售额总和和平均值,从而获得更宏观的销售趋势和总体表现。

向下钻取(Drill-Down)则是相反的操作,它是从较高层级的数据汇总层级切换到较低层级,以获得更详细的细分数据。通过向下钻取,我们可以深入到更细致的数据层级,以获取更详细、具体的信息。

继续以上面的例子,假设我们当前处于季度级别的销售数据汇总,通过向下钻取,我们可以切换到月份级别的细分数据,以查看每个季度内各个月份的销售情况,进一步分析季度内的销售趋势和波动情况。

向上钻取和向下钻取是在数据分析中进行层级切换和数据细化的常用操作。它们使分析人员能够根据需要在不同的层级之间切换,从整体和细节两个视角对数据进行深入理解和分析。这种灵活性和可操作性有助于发现数据中的模式、趋势和异常情况,并支持更有针对性的决策和行动。

1.3 连续分组

连续分组(Continuous Grouping)是一种数据分析方法,用于将连续变量划分为不同的组或区间,以便更好地理解数据的分布和趋势。通过连续分组,我们可以将连续变量按照一定的规则划分为若干个区间,然后分析每个区间内的数据特征和统计指标,如频数、均值、中位数等。这有助于我们识别出数据的特定模式、异常值和趋势,并提供对数据分布的更详细描述。

(1)分隔

分隔(一阶差分)是一种数据处理技术,用于计算连续变量在相邻数据点之间的差异或变化。一阶差分可以通过计算当前数据点与前一个数据点之间的差异来表示数据的变化趋势。这对于识别数据中的趋势、周期性和变化点非常有用。通过观察一阶差分的值,我们可以了解数据的增长或减少速度,以及变化的程度。

(2)拐点

拐点(二阶差分)是在一阶差分的基础上进行的进一步处理,用于检测数据变化的拐点或突变点。二阶差分计算的是一阶差分之间的差异,通过观察二阶差分的值,我们可以判断数据变化的趋势是否发生了明显的转折点或拐点。拐点分析可以帮助我们确定数据变化的阶段性特征,识别出数据中的重要变化点,并对数据的结构和趋势进行更精确的分析。

(3)聚类

聚类(Clustering)是一种无监督学习方法,用于将数据样本划分为不同的组或簇,使得同一组内的样本具有较高的相似性,而不同组之间的样本具有较大的差异性。聚类分析可以帮助我们发现数据中的内在模式和结构,将相似的数据点归为一类,并将不同的数据点分离开来。常用的聚类算法包括K-means聚类、层次聚类、DBSCAN等。通过聚类分析,我们可以识别出数据集中的群组、聚集或异常点,并洞察数据的特定模式和分布。

(4)不纯度

不纯度(Gini Impurity)是在决策树算法中用于衡量节点纯度的指标。在分类问题中,不纯度衡量了一个节点中样本的混杂程度,即该节点包含不同类别样本的程度。Gini Impurity通过计算每个类别在节点中的频率的

2. 不纯度(Gini系数)

2.1 概述

Gini系数是一种衡量不纯度的指标,常用于衡量分类问题中的类别不平衡程度。在机器学习和决策树算法中经常使用Gini系数来评估节点的纯度。

Gini系数的计算方法如下:
1. 首先,计算每个类别在数据集中的频率或比例。
2. 计算Gini系数的公式为:Gini = 1 - ∑(p^2) ,其中∑表示对所有类别求和,p表示每个类别的频率或比例。
3. Gini系数的取值范围为0到1,0表示数据集的纯度最高,即所有样本都属于同一类别;1表示数据集的纯度最低,即各类别的样本均匀分布。

在分类问题中,使用Gini系数可以评估不同特征的划分能力,选择具有较低Gini系数的特征作为划分点,以提高决策树的分类性能。

公式2:  Gini(D)=1-\sum \left ( \frac{C_{k}}{D}\right )^{2}

2.2 分组分析

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import scipy.stats as ss
import seaborn as sns

# 设置Seaborn绘图的上下文和字体大小
sns.set_context(font_scale=1.5)

# 读取HR.csv数据文件,并将数据存储在DataFrame对象df中
df = pd.read_csv("../data/HR.csv")

# 使用Seaborn绘制条形图,其中x轴为"salary"列,y轴为"left"列,hue参数表示按照"department"列进行分组
sns.barplot(x="salary", y="left", hue="department", data=df)

# 显示绘图结果
plt.show()

该代码使用了pandasnumpymatplotlib.pyplotseaborn库来进行数据处理和可视化。

  1. sns.set_context(font_scale=1.5):设置Seaborn绘图的上下文,并将字体大小设置为1.5倍,用于调整绘图的整体样式。

  2. df = pd.read_csv("../data/HR.csv"):通过pd.read_csv()函数读取名为"HR.csv"的数据文件,并将数据存储在DataFrame对象df中,用于后续的数据分析和可视化。

  3. sns.barplot(x="salary", y="left", hue="department", data=df):使用Seaborn的barplot函数绘制条形图。其中,x="salary"表示将"salary"列作为x轴数据,y="left"表示将"left"列作为y轴数据,hue="department"表示按照"department"列进行分组。最终绘制出不同薪资水平下离职率的条形图,并根据部门进行分组和着色。

  4. plt.show():显示绘制的条形图结果。

条形图结果:

从表中可以知道,市场部的工资与离职率很高。工资在中等收入的部门,Hr的离职率是最高的

 2.3 连续值分析

# 设置绘图上下文的字体比例
sns.set_context(font_scale=1.5)

# 读取数据
df = pd.read_csv("../data/HR.csv")

# 获取满意度数据列
sl_s = df["satisfaction_level"]

# 创建x轴数据,使用长度范围
x_data = list(range(len(sl_s)))

# 创建y轴数据,对满意度数据进行排序
y_data = sl_s.sort_values()

# 使用sns.barplot绘制条形图,x轴为x_data,y轴为y_data
sns.barplot(x=x_data, y=y_data)

# 显示图形
plt.show()

sl_s代表了"satisfaction_level"列的数据,如果这列数据是连续值,那么sl_s也将是一个连续值的Series对象。

然后,在代码中使用sns.barplot绘制条形图时,将连续值的x_data作为x轴数据,这可能会导致图形不太准确或不易解释。通常,条形图更适用于展示类别型数据的分布,而对于连续值的分布,常用的方法是使用直方图(sns.histplot)或核密度估计图(sns.kdeplot)等。

因此,如果satisfaction_level是连续值的话,您可以考虑使用其他适合连续值的图形方法来展示其分布情况。

条形图结果:

如图,存在两个拐弯的点,可以通过对拐弯的点做界限进行分组分析

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/630424.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

chatgpt赋能python:Python怎么写绝对值

Python怎么写绝对值 在Python编程语言中,有很多常用函数。其中包括求绝对值的函数。在这篇文章中,我们将介绍如何在Python中使用绝对值函数,并提供一些示例。 什么是绝对值函数? 绝对值函数是一个数学中常用的函数,…

WPF开发txt阅读器4:字体控件绑定

文章目录 控件折叠字体尺寸绑定选择字体字体的中文名称 txt阅读器系列: 需求分析和文件读写目录提取类💎列表控件与目录 控件折叠 作为一个txt阅读器,至少能够设置文字字体、尺寸,段落行间距等,还得有护眼模式等一系…

2023 年最新版Java面试题及答案整理(完整版,超详细)

程序员一步入中年,不知不觉便会被铺天盖地的“危机感”上身,曾经的那个少年已经不在,时间就是这样公平。就算你能发明Java语言,随着时间的推移,你注定还是要成为慢慢变蔫的茄子,缓缓变黑的葡萄。 看着金九…

支付宝商家多个账号下的账单管理工具配置指南

大家好,我是小悟 阅读这篇文章之前,结合这篇【有了这个工具,支付宝商家多个账号下的账单管理更方便了】干货食用更佳。 商户管理 这里录入的是商家应用相关信息 商户名称:应用id所属的应用名称。 应用id:支付宝开放…

Django新手必看:如何创建应用和定义数据表。(详细讲解)

Django新手必看:如何创建应用和定义数据表。 1. Django创建应用1.1 创建应用1.2 应用的添加 2. Django ORM2.1 定义数据表2.2 定义项目数据表2.3 通用字段选项2.4 外键使用2.5 应用数据库迁移 🏘️🏘️个人简介:以山河作礼。 &…

json-server操作restful

1.安装Node.js 默认已经内置npm&#xff0c;下载对应软件包直接安装即可。nodejs的官网 命令 描述 指令解释npm -v查看版本npm install <模块名>安装模块npm list查看所有全局安装的模块npm list -g查看某个模块的版本号npm install --save <模块名>在package.js…

【大模型】开源大模型汇总以及微调策略

目录 前言LLaMAstanford AlpacaGuanacoVicunaChinese-LLaMA-AlpacaChinese-VicunaLuotuo-Chinese FalconOpenBuddy-Falcon ChatGLM && VisualGLMMOSSAquilaPandaGPTTigerBot模型微调策略LoRAQLORAP-tuningv2 前言 自从ChatGPT出世以来&#xff0c;各个大厂/研究院都纷…

Hugging News #0609: 最新代码生成模型 StarCoder+ 和 StarChat Beta 重磅发布!

每一周&#xff0c;我们的同事都会向社区的成员们发布一些关于 Hugging Face 相关的更新&#xff0c;包括我们的产品和平台更新、社区活动、学习资源和内容更新、开源库和模型更新等&#xff0c;我们将其称之为「Hugging News」&#xff0c;本期 Hugging News 有哪些有趣的消息…

SG90舵机介绍

SG90舵机简介 SG90舵机是一种位置&#xff08;角度&#xff09;伺服的驱动器&#xff0c;适用于那些需要角度不断变化并可以保持的控制系统。在机器人机电控制系统中&#xff0c;舵机控制效果是性能的重要影响因素。舵机可以在微机电系统和航模中作为基本的输出执行机构&#x…

耗时一个月,整理了这份大厂Java面试 / 学习指南,共计1500+ 题全面解析

程序员一步入中年&#xff0c;不知不觉便会被铺天盖地的“危机感”上身&#xff0c;曾经的那个少年已经不在&#xff0c;时间就是这样公平。就算你能发明 Java 语言&#xff0c;随着时间的推移&#xff0c;你注定还是要成为慢慢变蔫的茄子&#xff0c;缓缓变黑的葡萄。 看着金…

AI不能做什么?

什么是非人工智能 每个行业都需要的 3 种人为驱动的决策能力 布兰代斯马歇尔 支持统计数据的研究报告预计高度依赖AI的未来。 • 2018年,麦肯锡全球研究院发布了一份《工作未来报告》,估计到2030年,全球将有4亿人被AI系统、工具和平台取代。 • 2023年3月,高盛发布了其《全球经…

Typora安装使用

Typora安装使用 1、概述 因为本人电脑是Mac笔记本&#xff0c;所以本文介绍下Mac M1芯片下Typora的安装使用以及在线插件的安装。 2、安装Typora 下载Typora 1.5.8&#xff1a;下载 Typora 1.5.8 - 马可菠萝 完成安装。 自定义下载喜欢的主题&#xff1a;点击文件->偏好…

day10——线性回归的改进之岭回归

线性回归的改进之岭回归 一、过拟合和欠拟合二、正则化类别三、岭回归四、实操&#xff1a;波士顿房价预测 一、过拟合和欠拟合 1&#xff0c;欠拟合 如下所示&#xff0c;机器学习到的天鹅特征太少了&#xff0c;导致区分标准太粗糙&#xff0c;不能准确识别出天鹅。 2&…

asp.net归宿管理系统VS开发sqlserver数据库web结构c#编程Microsoft Visual Studio

一、源码特点 asp.net归宿管理系统 是一套完善的web设计管理系统&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为vs2010&#xff0c;数据库为sqlserver2008&#xff0c;使用c#语言开发 asp.net归宿管理系统VS开发sqlserver数…

Android垃圾分类助手APP(Java+Android Studio+SQLite)

wx供重浩&#xff1a;创享日记 对话框发送&#xff1a;69垃圾 获取完整源码源文件说明文档报告数据库文件等 开发运行环境 开发语言&#xff1a;Java 开发工具&#xff1a;Android Studio 模拟器&#xff1a;雷电模拟器9 数据库&#xff1a;SQLite 使用的核心类及组件 Activ…

广告数仓:采集通道创建

系列文章目录 广告数仓&#xff1a;采集通道创建 文章目录 系列文章目录前言一、环境和模拟数据准备1.hadoop集群2.mysql安装3.生成曝光测试数据 二、广告管理平台数据采集1.安装DataX2.上传脚本生成器3.生成传输脚本4.编写全量传输脚本 三、曝光点击检测数据采集1.安装Zookee…

CentOS6.10上离线安装ClickHouse19.9.5.36并修改默认数据存储目录

背景 在一台装有 CentOS6.10 操作系统的主机上安装 ClickHouse &#xff08;其实本来计划是先安装 Docker &#xff0c;然后在 Docker 中快速启动 ClickHouse 的&#xff0c;但是由于 CentOS6 对 Docker 支持不好&#xff0c;就直接在系统上装 ClickHouse 吧&#xff09;&…

jvm 命令和工具, jvm 堆 内存泄露 fullgc

目录 堆太大? 堆内存分析工具 MAT JProfiler ZProfiler - 线上的mat - 已进化为Grace EagleEye-MProf - 命令行 jhat jvisual 问题 w使用JProfiler和MAT打开内存超大的hprof文件时报错的解决方案_hprof太大_CoderBruis的博客-CSDN博客 很简单,把jvm参数调整下,设置小…

vue3---模板引用 nextTick

目录 模板引用--ref 访问模板引用 v-for 中的模板引用 函数模板引用 组件上的 ref 简单理解Vue中的nextTick 示例 二、应用场景 三、nextTick源码浅析 实战 --- vue3实现编辑与查看功能 模板引用--ref 虽然 Vue 的声明性渲染模型为你抽象了大部分对 DOM 的直接操作&…

TOF激光雷达告别“技术路线之争”

交流群 | 进“传感器群/滑板底盘群/汽车基础软件群/域控制器群”请扫描文末二维码&#xff0c;添加九章小助手&#xff0c;务必备注交流群名称 真实姓名 公司 职位&#xff08;不备注无法通过好友验证&#xff09; 编辑 | 苏清涛 两三年前&#xff0c;在提起激光雷达时&…