像学Excel 一样学 Pandas系列-创建数据分析维度

嗨,小伙伴们。又到喜闻乐见的Python 数据分析王牌库 Pandas 的学习时间。按照数据分析处理过程,这次轮到了新增维度的部分了。

老样子,我们先来回忆一下,一个完整数据分析的过程,包含哪些部分内容。

其中,Pandas 的基础信息导入、数据导入和数据整理、数据探索和清洗已经在前几篇文章里聊过。

感兴趣的小伙伴,可以点击链接跳转观看。

像学Excel 一样学 Pandas系列-导入篇

像学Excel 一样学 Pandas系列-数据读取和合并篇

像学Excel 一样学 Pandas系列-数据探索和数据清洗

图片

新增维度部分,是在完成数据探索,获取数据的现状,并且对脏数据完成清洗工作后的后道工序。而且,这部分非常的关键,很多分析场景下,需要做的挖掘分析,情况归类,都需要在维度新增里完成。

图片

这个时候,Pandas 要开始变形了。为什么增加维度这么重要。

增加数据维度,是最终分析报告能获取到的分析颗粒度的有力支持。新增数据维度可以显著提升分析的深度和广度。

图片

以我所在的汽车行业举例。

通过添加车辆特征维度(如发动机类型、驱动方式、燃油效率),可以更全面地了解具备哪些特性的车型更受消费者欢迎。结合销售数据和客户反馈维度,可以精确分析哪些车型的特定问题(如燃油效率低、维修率高)影响了客户满意度。

合并增加利用车辆使用数据(如行驶里程、维修记录)和客户人口统计信息,可以深入洞察车辆的长期性能和客户的忠诚度。

按例,为了方便后续的演示,同样创建一个虚拟的Pandas DataFrame来演示维度新增的过程。这个DataFrame,包括车型、销售日期、销售数量、客户年龄和客户收入等字段。

import Pandas as pd
data = {    '车型': ['轿车', 'SUV', '轿车', 'SUV', 'MPV'],    '销售日期': pd.date_range(start='2024-01-01', periods=5, freq='D'),    '销售数量': [10, 15, 12, 20, 8],    '客户年龄': [34, 29, 45, 31, 41],    '客户收入': [5000, 7000, 6000, 8000, 5500]}
df = pd.DataFrame(data)

图片

01 数据分箱映射 

为啥我这么爱 pandas。每次做车型价格带分析,最烦躁的就是,今天 5 万一个档做价格带切割,明天还得弹性切割。每次做分组映射,分分钟烦死个人。在 Pandas 这里,一个函数就搞定。

假定,我们要根据客户收入将客户分为不同的等级。你只需要在 imcome_map 里配置一个映射字典,描述清楚“低收入”,“中等收入”,“高收入”人群的收入加个分层。

然后,使用 pd.cut 函数,配置分区的边界值 bins 和每一个分组对应的 labels,就可以完成映射了。

下次老板再找你调收入等级,分分钟完成。​​​​​​​

#income_map = {#    '低收入': [0, 3000],#    '中等收入': (3000, 7000],#    '高收入': (7000, np.inf)#} #备注给人类看的,区分每一个分层的收入范围。
df['客户收入等级'] = pd.cut(df['客户收入'], bins=[0, 3000, 7000, np.inf], labels=['低收入', '中等收入', '高收入'])

看看,是不是超容易,是不是超简单!

图片

 02 多字段综合规则研判维度增加

 
 

老板拿到分箱结果后,说不行,我们还得综合客户的年龄来判断这个人的收入水平。那么,基于客户年龄和收入,我们创建一个新列来标识是否为潜在的高端客户。这就涉及了多字段综合规则研判维度增加的问题了。

df['潜在高端客户'] = df.apply(lambda row: '是' if row['客户年龄'] > 35 and row['客户收入'] > 5000 else '否', axis=1)

这里用一个 df.apply 函数,结合 lambda 函数,快速锁定年龄小于 35 岁,收入大于 5000 的用户,并且判断未潜在高端用户。

年纪轻轻就高收入,确实潜力不小,哈哈哈。

图片

03 维度表映射增加

假设我们有一个车型维度表,包含车型对应的市场定位信息。这里可以通过 pd.merge,数据合并映射的方式,将 car_dim 里的维度添加如 df 内,形成一个新的列,这个列名就是“市场定位”。

​​​​​​​

car_dim = {    '车型': ['轿车', 'SUV', 'MPV'],    '市场定位': ['家用', '家用', '商务']}model_df = pd.DataFrame(car_dim)df = df.merge(model_df, on='车型', how='left')

图片

这里有一个地方需要注意一下,你的车型和市场定位必须是一一映射匹配的关系。如果存在一对多的情况,使用 pdf.merge 就会分裂出新的数据行。

我们来看一个错误案例:我在 car_dim 里错误的将轿车的市场定位配置了两个类型,包含“家用”和“商务”。生成的结果数据里,每种情况,都分裂多出来的一条数据。这个,需要认真检查映射表字段的内容,是否严格遵守一一对应关系。

图片

 

好啦,今天用超级简单的数据进行了数据维度新增的说明和演示。

如果小伙伴有其他想深入了解的内容,欢迎留言、关注、点赞、评论转发。您的每一份互动,都是我肝下去的动力。

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

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

相关文章

CAM350如何添加走线?

在CAM350中如何添加走线? 有时候由于PCB文件丢失或其它原因,只有GERBER文件,这时候LAYOUT工程师就只能使用CAM350在GERBER里面修改。 那在CAM350里面如何添加走线呢? 操作方法如下: 1、选择菜单栏Add 选择Line 2、在走线前,要先设置D码,就是走线的形状和宽度。必需选择…

【服务器部署】Jenkins配置前端工程自动化部署

作者介绍:本人笔名姑苏老陈,从事JAVA开发工作十多年了,带过刚毕业的实习生,也带过技术团队。最近有个朋友的表弟,马上要大学毕业了,想从事JAVA开发工作,但不知道从何处入手。于是,产…

BIOS中的设置虽然不少,但其实大部分时候只需进行一些简单的调整

序言 浏览BIOS可能会让人感到不知所措,因为要考虑的设置太多了。但是,你应该在BIOS中进行一些简单的调整,以提高系统的性能和稳定性。我们将向你展示其中的一些调整,并解释你可能想要使用它们的时间和原因。 用密码保护你的BIOS 虽然我们很小心地对用户帐户进行密码保护…

[译]Reactjs性能篇

英文有限,技术一般,海涵海涵,由于不是翻译出身,所以存在大量的瞎胡乱翻译的情况,信不过我的,请看原文~~ 原文地址:https://facebook.github.io/react/docs/advanced-per…

JavaSE阶段面试题(一)

目录 1.int a 1, int b 1, Integer c 1, Integer d 1;四个区别和联系,以及c和d是同一个吗? 2.为什么重写HashCode必须重写euqals,两者之间的关系? 3.创建对象的方式有哪些 4.重写和重载的区别 5.抽象类和接口…

day02-广播机制

广播机制 广播是numpy对不同形状的数组进行数值计算的方式,对数组的算术运算通常在相应的元素上进行 1.如果两个数组a和b形状相同,即满足a.shape b.shape,那么a*b的结果就是a与b数组对应位相乘。这要求维数相同且各维度的长度相同 a np.a…

Windows和Linux服务器的SSL证书续订方法

在现代互联网中,SSL证书已经成为保障网站安全和数据隐私的必备工具。SSL证书到期后,服务器管理员需要及时续订SSL证书,以确保网站的正常访问和安全性。本文将详细介绍在Windows和Linux服务器上续订SSL证书的步骤。 生成CSR(证书签…

CesiumJS【Basic】- #024A mp4/mov 转 webm

文章目录 mp4/mov 转 webm1 目标2 代码3 参考mp4/mov 转 webm 1 目标 把mp4格式的文件、用mov格式的文件转成用webm格式的文件 2 代码 前提是需要先安装好 FFmpeg # 把原始mp4的尺寸变小(带alpha通道的mov,这样转换后好像透明通道丢死了,可以在AE里直接调整输出mov) f…

路由器是什么?

路由器(Router)是一种网络设备,它的主要功能是用来延伸、拓展网络,特别是在连接多个逻辑上分开的网络时发挥关键作用。逻辑网络可以理解为代表一个单独的网络或者一个子网。当数据需要在不同的子网之间传输时,路由器就…

七大排序算法的深入浅出(java篇)

🍁 个人主页:爱编程的Tom💫 本篇博文收录专栏:Java专栏👉 目前其它专栏:c系列小游戏 c语言系列--万物的开始_ 等等 🎉 欢迎 👍点赞✍评论⭐收藏💖三连支…

【第15章】MyBatis-Plus自动映射枚举

文章目录 前言一、枚举声明1. 方式一:注解标记2. 方式二:实现接口 二、未声明枚举1.修改全局 defaultEnumTypeHandler 三、号外参考: 如何序列化枚举值为前端返回值1.Jackson1.1 重写 toString 方法1.2 注解处理 2.Fastjson2.1 重写 toString 方法 总结 …

【高级篇】第9章 Elasticsearch 监控与故障排查

9.1 引言 在现代数据驱动的应用架构中,Elasticsearch不仅是海量数据索引和搜索的核心,其稳定性和性能直接影响到整个业务链路的健康度。因此,建立有效的监控体系和掌握故障排查技能是每一位Elasticsearch高级专家的必备能力。 9.2 监控工具:洞察与优化的利器 在Elastics…

乘用车副水箱浮球式液位计传感器

浮球式液位计概述 浮球式液位计是一种利用浮球在液体中浮动的原理来测量液位的设备,广泛应用于各种工业自动化控制系统中,如石油化工、水处理、食品饮料等行业。它通过浮球的上下运动来测量液位的高低,具有结构简单、安装方便、测量范围广、…

如何选择适合自己的虚拟化技术?

虚拟化技术已成为现代数据中心和云计算环境的核心组成部分。本文将帮助您了解如何选择适合自己需求的虚拟化技术,以实现更高的效率、资源利用率和灵活性。 理解虚拟化技术 首先,让我们了解虚拟化技术的基本概念。虚拟化允许将一个物理服务器划分为多个虚…

百词斩-英语单词大赛

根据您提供的网页内容,以下是一些可能对您有帮助的信息: 1. **比赛名称**: 全国大学生英语单词大赛。 2. **活动平台**: 比赛通过百词斩App进行。 3. **用户基础**: 百词斩App拥有两亿用户,说明这是一个广泛…

HTTP请求中常用的方法

HTTP(Hypertext Transfer Protocol,超文本传输协议)是客户端(如浏览器)与服务器之间进行通信的基础。HTTP请求中常用的方法主要包括以下几种: 1. GET 方法 用途:用于从服务器获取资源&#xf…

【Linux】多线程(一万六千字)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 文章目录 前言 线程的概念 线程的理解(Linux系统为例) 在Linux系统里如何保证让正文部分的代码可以并发的去跑呢? 为什么要有多进程呢? 为…

docker可视化界面portainer

好文转载记录 Docker入门到实践 (九) docker可视化界面portainer的安装与使用_访问 portainer-CSDN博客

Osg中的智能指针和观察指针

目录 1 设计 内容 1 设计 osg中能够使用智能指针的对象都继承自引用计数类Referenced,观察指针(observer_ptr)与智能指针之间通过ObserverSet相互关联,其中obserserver_ptr直接依赖ObeserverSet。 Referenced不直接依赖ObserverSet类,但可…

pdf合并,pdf合并成一个pdf,pdf合并在线网页版

在处理pdf文件的过程中,有时我们需要将多个pdf文件合并成一个pdf文件。作为一名有着丰富计算机应用经验的技术博主,我将为您详细介绍如何将多个pdf文件合并成一个pdf文件。 pdf合并方法:使用, “轻云处理pdf官网” 打开 “轻云处…