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

news2024/11/16 21:55:44

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/642379.html

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

相关文章

SciencePub学术 | 国内高口碑重点SCIEI征稿中

SciencePub学术 刊源推荐: 国内高口碑重点SCI&EI征稿中!期刊质量高,接收领域广。信息如下,录满为止: 一、期刊概况: 国内高口碑重点SCI&EI 📌【期刊简介】IF:7.5-8.0,JCR…

python高级-socket和web相关

目录 一、socket 1.客户端开发 2.tcp客户端 3.tcp服务端 4.连接的注意事项 5.多任务服务端 二、静态web 1.请求报文 2.响应头 3.静态web服务器 4.socket静态页面 5.多进程模拟404和200状态码 6.面向对象多任务 结语 一、socket 1.客户端开发 创建客户端套接字对…

anaconda ubuntu安装

1、下载anaconda 地址:https://www.anaconda.com/download#downloads 我是x86 64位系统,所以选择第一个 2、安装 执行命令: sh Anaconda3-2023.03-1-Linux-x86_64.sh中间会有几个过程 enter 确定 yes 确定 最后默认安装位置为&#xff1…

const、let、var区别

const、let、var区别 0、前言1、区别2、示例2.1 提前调用报错2.2 const与 let 定义的变量不能重复2.3 const与 let定义的变量如果在{}中只能在{}中调用2.4 const定义的变量不能重复赋值。 0、前言 let和const是ES6新增的声明变量的关键词,之前声明变量的关键词是var…

SpringBoot+mybatis教务管理系统

项目介绍 主要功能: 这个项目是一个教务管理系统,其中有三种角色:管理员,教师,学生 管理员权限: 管理员:对课程、学生信息、教师信息等进行增删改查,修改个人密码,修改学…

服务日志性能调优,由log引出的巨坑

只有被线上服务问题毒打过的人才明白日志有多重要! 谁赞成,谁反对?如果你深有同感,那恭喜你是个社会人了:) 日志对程序的重要性不言而喻,轻巧、简单、无需费脑,程序代码中随处可见…

新项目之初性能测试工作如何前移?

最近刚接手一个新项目,在最开始的时候要求对这个项目做性能测试,产品经理也给不出性能需求,只因为这个项目是电商项目,可能会有高并发,秒杀的场景,所以产品经理要求我们对这个项目必须做性能测试&#xff0…

Linux内核中内存管理相关配置项的详细解析16

接前一篇文章:Linux内核中内存管理相关配置项的详细解析15 三十五、Data Access Monitoring 此项展开后如下图所示: “DAMON: Data Access Monitoring Framework”项默认不选中。如果将其选中,则页面变为: 1. DAMON: Data Access…

关于 vue2 后台管理系统构建 vue2+mock.js 的经典案例

一,初识 Mock.js 1.什么是 mock.js: 主要是模拟数据生成器,可以生成随机数据,拦截器 Ajax 请求 2.为什么要使用 mock.js 由于很多学生在学习过程中,后端还没有做好接口,写好接口文档,有了mock.js 前端就…

2023VALSE目标跟踪相关的Poster

前沿:本博文分享了2023 中国无锡举办的VALSE 中与目标跟踪相关的Poster。 1. Weakly Alignment-Free RGBT Salient Object Detection With Deep Correlation Network IEEE TRANSACTIONS ON IMAGE PROCESSING, VOL. 31, 20 摘要:RGBT显著性目标检测&am…

Linux5.4 Mysql数据库初体验及管理

文章目录 计算机系统5G云计算第四章 LINUX Mysql数据库初体验及管理一、数据库相关概念1. 数据 (Data)的概念2.表的概念3.数据库的概念4.数据库管理系统5.数据库系统 二、数据库的发展1.第一代数据库2.第二代数据库3.第三代数据库 三、主流的数据库介绍四、关系数据库1.概念2.E…

最强Postman替代品,国产软件Apifox到底有对牛?

目录 前言: 接口管理现状 一、常用解决方案 二、存在的问题 Apifox 解决方案 一、如何解决这些问题 二、Apifox 做的不仅仅是数据打通 三、后续功能规划 四、更多 Apifox 功能截图 前言: Apifox是一款国产的API接口管理工具,可以帮…

Linux之用户组管理

目录 Linux之用户组管理 创建用户组 --- groupadd命令 语法格式 参数及作用 案例 添加/删除组成员 --- gpasswd命令 命令格式 参数及作用 案例 修改用户组属性 --- groupmod命令 语法格式 参数及作用 案例 删除组账户 --- groupdel命令 语法格式 案例 用户和组…

ASP.NET实验室信息管理系统源码 LIMS系统源码

ASP.NET实验室信息管理系统源码 LIMS系统源码 lims 实验室信息管理系统(LIMS)。它是由计算机硬件和应用软件组成,能够完成实验室数据和信息的收集、分析、报告和管理。 LIMS实验室信息管理系统专门针对实验室的整体环境而设计,以…

两个链表相加

描述 假设链表中每一个节点的值都在 0 - 9 之间,那么链表整体就可以代表一个整数。 给定两个这种链表,请生成代表两个整数相加值的结果链表。 数据范围:0≤n,m≤1000000,链表任意值 0≤val≤9 要求:空间复杂度 O(n)…

Docker使用记录

文章目录 Docker基本使用Docker配置查看状态卸载安装使用 apt 存储库安装在 Ubuntu 上安装 Docker 桌面(非必要) Docker实例使用现有的镜像查找镜像拖取镜像列出镜像列表更新镜像导出镜像删除镜像导入镜像清理镜像查看容器导出容器导入容器-以镜像的方式创建容器重启容器进入容…

Springboot Apollo配置yml

1.背景: 项目都是配置的Apollo配置中心来进行配置的。新功能需要yml格式的数据(层级结构更清晰) 2.问题: 1)Apollo是否支持yml格式的配置信息? 2)配置好了以后读取不到Apollo配置的yml。 3…

平心而论,做电商数据分析还得这款大数据分析平台

各个业务系统上的数据能放一起分析了吗?根据物流周期做好库存计划了吗?广告投入分析评估报表出来吗?运营、物流、财务等部门环节间的信息脱节解决了吗?做电商数据分析不仅仅是做一两个销售分析报表,而是要综合各个部门…

vue3 - 内置组件Teleport的使用

<Teleport> 是一个内置组件&#xff0c;它可以将一个组件内部的一部分模板“传送”到该组件的 DOM 结构外层的位置去。 1&#xff0c;使用场景&#xff1a; 一个组件模板的一部分在逻辑上从属于该组件&#xff0c;但从整个应用视图的角度来看&#xff0c;它在 DOM 中应该…

Python网络爬虫使用教程

文章目录 一、URL资源抓取1.urllib2.requests3.requests-html二、正则表达式三、数据解析1.Beautiful Soup2.lxml3.selectolax四、自动化爬虫selenium五、爬虫框架1.Scrapy2.pyspider框架六、模拟登录与验证码识别七、autoscraper&#xff08;不需要编程基础&#xff09; 一、U…