数分基础(03-2)客户特征分析-简单可视化

news2024/11/22 11:29:52

文章目录

  • 简单可视化
    • 1. 并排柱状图
    • 2. 堆叠柱状图
      • 2.1 画图
      • 2.2 对数刻度

简单可视化

接上一篇 数分基础(03-1)客户特征分析,运行本篇代码之前,先运行上一篇的代码。

为了能够对比和总览三个客户群体Cluster 0 - Cluster 1 的特征,上一篇末尾使用了并排柱状图,并排单图中对比多个群体在多个特征上的差异。

1. 并排柱状图

三个群体在每个特征上的数据并排展示,便于直接对比,快速发现群体之间的特征差异。

import matplotlib.pyplot as plt
import numpy as np

# 设置 Pandas 显示浮点数格式,禁用科学计数法
pd.set_option('display.float_format', '{:.2f}'.format)

# 定义特征和群体标签
features = ['Avg Total Sales', 'Avg Total Quantity', 'Avg Total Profit', 'Avg Discount']
cluster_labels = ['Cluster 0', 'Cluster 1', 'Cluster 2']

# 将数据转为数组格式,便于绘制
values = cluster_summary[features].values.T

# 创建图表
fig, axes = plt.subplots(1, 4, figsize=(18, 5))  # 设置为一行四列的图表布局

# 为每个特征绘制并列的柱状图
colors = ['skyblue', 'lightgreen', 'salmon']  # 颜色配置
for i, ax in enumerate(axes):
    ax.bar(cluster_labels, values[i], color=colors, width=0.5)
    ax.set_title(features[i])
    ax.set_xlabel('Clusters')
    ax.set_ylabel('Values')

# 调整布局
plt.tight_layout()
plt.show()

# 还原 Pandas 默认显示设置(可选)
pd.reset_option('display.float_format')

在这里插入图片描述

2. 堆叠柱状图

2.1 画图

在一张图上直观展示各个群体的多项特征,方便对比,例如各群体在各特征上的总体情况和比例差异。

import matplotlib.pyplot as plt
import numpy as np

# 定义特征和群体标签
features = ['Avg Total Sales', 'Avg Total Quantity', 'Avg Total Profit', 'Avg Discount']
cluster_labels = ['Cluster 0', 'Cluster 1', 'Cluster 2']

# 将数据转为数组格式,便于绘制
values = cluster_summary[features].values.T

# 设置柱状图的宽度和位置
bar_width = 0.25
index = np.arange(len(features))

# 创建图表
fig, ax = plt.subplots(figsize=(14, 8))

# 为每个群体绘制柱状图
colors = ['skyblue', 'lightgreen', 'salmon']  # 颜色配置
for i, cluster in enumerate(cluster_labels):
    ax.bar(index + i * bar_width, values[:, i], bar_width, label=cluster, color=colors[i])

# 设置标题和标签
ax.set_xlabel('Features', fontsize=14, labelpad=10)
ax.set_ylabel('Values', fontsize=14, labelpad=10)
ax.set_title('Comparison of Clusters', fontsize=16, pad=20)
ax.set_xticks(index + bar_width)
ax.set_xticklabels(features, fontsize=12, rotation=45)
ax.legend(title='Clusters', fontsize=12, title_fontsize='13')

# 调整图表布局和外观
plt.style.use('ggplot')  # 使用更加现代的样式
fig.patch.set_facecolor('white')  # 设置背景颜色
ax.grid(True, which='both', linestyle='--', linewidth=0.5)  # 调整网格线
plt.tight_layout(pad=2)  # 调整布局以防止裁剪和重叠

plt.show()

# 还原 Pandas 默认显示设置(可选)
pd.reset_option('display.float_format')

在这里插入图片描述

2.2 对数刻度

但是可以发现,由于不同特征的差异,某些特征的值相差较大,例如Avg Total Sales 平均总销售额,与折扣相比,数值非常高,导致较小的特征,例如Avg Discount 在图中几乎不可见,影响了整体的可读性

可以使用对数刻度

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

# 确保使用 Unicode 负号
plt.rcParams['axes.unicode_minus'] = True

# 定义特征和群体标签
features = ['Avg Total Sales', 'Avg Total Quantity', 'Avg Total Profit', 'Avg Discount']
cluster_labels = ['Cluster 0', 'Cluster 1', 'Cluster 2']

# 将数据转为数组格式,便于绘制
values = cluster_summary[features].values.T

# 设置柱状图的宽度和位置
bar_width = 0.25
index = np.arange(len(features))

# 创建图表
fig, ax = plt.subplots(figsize=(14, 8))

# 应用更加现代的样式
plt.style.use('ggplot')

# 设置背景颜色为白色
fig.patch.set_facecolor('white')

# 为每个群体绘制柱状图
colors = ['skyblue', 'lightgreen', 'salmon']  # 颜色配置
for i, cluster in enumerate(cluster_labels):
    ax.bar(index + i * bar_width, values[:, i], bar_width, label=cluster, color=colors[i])

# 使用对数刻度
plt.yscale('log')

# 设置标题和标签
ax.set_xlabel('Features', fontsize=14, labelpad=10)
ax.set_ylabel('Values', fontsize=14, labelpad=10)
ax.set_title('Comparison of Clusters', fontsize=16, pad=20)
ax.set_xticks(index + bar_width)
ax.set_xticklabels(features, fontsize=12, rotation=45)
ax.legend(title='Clusters', fontsize=12, title_fontsize='13')

# 调整网格线
ax.grid(True, which='both', linestyle='--', linewidth=0.5)

# 调整布局以防止裁剪和重叠
plt.tight_layout(pad=2)

plt.show()

# 还原 Pandas 默认显示设置(可选)
pd.reset_option('display.float_format')

在这里插入图片描述
对数刻度,通过对数变换来缩放数据值,使得视觉表示更加均衡。对每个数据点应用对数函数,缩小了高值和低值之间的诗句差距。例如,如果一个数据集包含1,10,100,1000,当使用线性刻度时,1000会显得非常突出,但在对数刻度下,数值的间距会缩小,可以使得不同数量级数据在同一图上得到较好地表示。

但要求所有数据必须为正数,所以前面代码会有些小问题,因为cluster 2群体的利润为负值。同时也需要小心解释,因为刻度标记不再是等距的。因此使用对数刻度,是希望在特征值差异很大时候均衡展示。

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

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

相关文章

冯·诺依曼计算机:现代计算机的“DNA”

人不走空 🌈个人主页:人不走空 💖系列专栏:算法专题 ⏰诗词歌赋:斯是陋室,惟吾德馨 目录 🌈个人主页:人不走空 💖系列专栏:算法专题 ⏰诗词歌…

XSS LABS - Level 16 过关思路

关注这个靶场的其他相关笔记:XSS - LABS —— 靶场笔记合集-CSDN博客 0x01:过关流程 进入靶场,右击页面,查看网页源码,搜索关键词 test 查看页面回显点: 页面只有一个回显点,跟前面关卡不同&am…

Python实时聊天室架构与API实战应用

尊敬的各位读者,欢迎参与本次共享研讨项目——利用Python构建实时聊天室。在本项目中,我们将引进一款前沿工具——发布订阅频道API,以实现聊天室内的实时交互功能。 在当今信息泛滥的社会环境下,实时交流已成为人们日常生活中不可…

探秘半枝莲:花语寓意深解、传奇传说追溯与卓越功效展现

在大自然的神秘宝藏中,有一种看似平凡却蕴含着无尽魅力的植物——半枝莲。它那娇小而鲜艳的花朵,仿佛是大自然精心雕琢的艺术品,散发着独特的魅力。当我们深入探寻半枝莲的世界时,会惊喜地发现它不仅有着迷人的花语寓意和传奇的传…

ES 根据条件删除文档

随着业务量的增多,es中数据越来越多,但有些数据其实后期并无业务用途,可直接做物理删除,程序里做兼容,但历史每个月的索引里的数据需要处理这部分冗余数据。 es提供_delete_by_query 根据查询条件进行删除的操作&…

ZooKeeper 实战(六) - 分布式ID实现方案

ZooKeeper 实战(六) - 生成分布式ID 文章目录 ZooKeeper 实战(六) - 生成分布式ID1.何为分布式ID2.分布式ID方案3.创建ZooKeeper节点4.获取序列ID5.处理序列ID6.使用分布式ID7.完整代码8.功能优化8.1.问题思考?1.容量问题2.并发问题3.内存问题 8.2.解决并发问题8.3.…

[Algorithm][综合训练][合唱团][跳台阶扩展问题][矩阵最长递增路径]详细讲解

目录 1.合唱团1.题目链接2.算法原理详解 && 代码实现 2.跳台阶扩展问题1.题目链接2.算法原理详解 && 代码实现 3.矩阵最长递增路径1.题目链接2.算法原理详解 && 代码实现 1.合唱团 1.题目链接 合唱团 2.算法原理详解 && 代码实现 解法&#…

爆火的《黑神话:悟空》对LabVIEW软件开发的启示

近期,《黑神话:悟空》在全球范围内爆火,引发了游戏行业和玩家群体的广泛关注。作为一款由中国开发团队Game Science历时多年打造的动作角色扮演游戏,它的成功不仅源于卓越的技术创新和对中国传统文化的深度挖掘,更在于…

本地部署Xinference实现智能体推理工作流(一)

提示:没有安装Docker的需要先提前安装好Docker 第一篇章 使用AutoDL平台快速部署xinference 备注:若使用AutoDL平台,以下过程使用无卡模型开机即可(省钱) 1. 下载Dify源码 Github下载Dify:https://github.com/langgenius/dify 2. 快速启动…

HTML粒子爱心

目录 写在前面 完整代码 代码分析 系列文章 写在最后 写在前面 教你用HTML语言实现粒子爱心动画的效果。 HTML,全称为HyperText Markup Language,即超文本标记语言,是构建网页的基本markup语言,它通过一系列标签tags来定义…

CMake Error at CMakeLists.txt (find_package)幕后真凶

竹杖芒鞋轻胜马,谁怕?一蓑烟雨任平生~ 个人主页: rainInSunny | 个人专栏: C那些事儿、 Learn OpenGL In Qt 文章目录 写在前面find_package报错解决Module模式Config模式 find_package()用法Module模式Config模式 写在前面 本文从CMake中find_packag…

AI无损放大工具 AI lossless zoomer 3.1.0.0

这款工具是作者基于腾讯开源免费的AI算法而开发的,腾讯开源算法地址:GitHub.com/xinntao/Real-ESRGAN 打开软件的主页面是黑色为主调的界面。把需要无损放大的图片直接拖入到软件中,再点【开始任务】,软件就会自动处理图片&#…

【论文阅读|cryoET】本周粗读汇总

论文1:CryoDRGN-ET:深度重建生成网络以可视化细胞内动态生物分子 Abstract 虽然冷冻电子断层扫描可以以分子分辨率揭示结构,但图像处理算法仍然是解决原位生物分子结构异质性的瓶颈。本文介绍CryoDRGN-ET用于cryoET断层图的异质重建。CryoD…

大厂产品经理面试:阿里、字节、百度、腾讯、拼多多等全国顶级大厂面试题一网打尽!

在互联网行业蓬勃发展的今天,产品经理作为连接技术、设计和市场的核心角色,其重要性日益凸显。想要进入国内顶尖的互联网大厂,如阿里巴巴、字节跳动、百度、腾讯、拼多多等,产品经理岗位的面试无疑是一场硬仗。本文将为你揭秘这些…

stm32定时器同步(二)

本文介绍使用一个定时器使能另一个定时器。 旧瓶装新酒,就是门控模式加一个TRGO,如果看到这里你还没有明白,那就去看看我前面的文章 代码部分也是旧瓶装新酒 void Timer3_Config(void) {TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;TIM…

皮皮虾保存视频怎么去除水印?教你3种技巧轻松去除水印

在如今这个信息爆炸的时代,我们经常会在网络上看到一些有趣的皮皮虾视频,想要保存下来,却发现视频带有水印。水印虽然可以保护视频的版权,但有时也会影响我们的观看体验。如何去除视频中的水印呢?本文将为您介绍三种实…

日期转换异常

报错 org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException: Error querying database. Cause: java.lang.NumberFormatException: For input string: "2024-07-01" Cause: java.lang.NumberFormatE…

Windows TCP/IP IPv6 DDos远程蓝屏复现及修复(CVE-2024-38063)

【前言】   最近,windows爆出重量级漏洞CVE-2024-38063),攻击者通过不断发送ipv6数据包,可实现远程DDOS导致目标windows直接蓝屏,或RCE。   下面就直接开展下,如何复现的,以及怎么修复。 一、漏洞分析 …

如何从官方 Yum 仓库安装 MySQL 5.6

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 介绍 2013年10月,MySQL开发团队正式推出了对yum存储库的支持。这意味着您现在可以确保直接从源安装最新和最好的MySQL版本&a…

论文阅读:SimVP: Simpler yet Better Video Prediction

论文地址:arxiv 摘要 作者认为,现有的CNN,RNN,Transformer 之类的视频预测领域的模型都过于复杂了,作者想要找到一个简单的方式,同时可以达到与之相当的效果。 作者提出了 SimVP,这是一个简单…