首页 > 其他分享 >像学Excel 一样学 Pandas系列-创建数据分析维度

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

时间:2024-07-03 22:02:47浏览次数:19  
标签:收入 df 像学 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 里错误的将轿车的市场定位配置了两个类型,包含“家用”和“商务”。生成的结果数据里,每种情况,都分裂多出来的一条数据。这个,需要认真检查映射表字段的内容,是否严格遵守一一对应关系。

图片


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

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

标签:收入,df,像学,Excel,客户,维度,数据,Pandas
From: https://blog.csdn.net/2401_85955060/article/details/140163148

相关文章

  • 学习笔记485—Excel技巧:一键将文本数字转换为数值
    Excel技巧:一键将文本数字转换为数值在使用Excel进行数据处理时,经常会遇到数据格式不匹配的问题。特别是当从外部导入数据或手动输入数据时,数字可能会被误识别为文本格式,这在进行数据计算和分析时会带来诸多不便。幸运的是,Excel提供了一些便捷的方法,可以帮助我们一键将文本转换为......
  • 基于POI的Excel导出
    基于POI的Excel导出1、后端依赖1<dependencies>2<dependency>3<groupId>org.apache.poi</groupId>4<artifactId>poi</artifactId>5<version>5.2.3</version>6</dependency>......
  • EasyExcel 填充+写入
    使用EasyExcel导出Excel时,有时会遇到如下情况:既要根据模板填充某些sheet又要根据业务写入某些sheetEasyExcel官方没有提供这样的示例,经过自己的研究和实验,得到了如下步骤:定义导出文件名StringfileName="测试.xlsx";获取模板文件InputStreamtemplateFile......
  • 这份Excel+Python飞速搞定数据分析手册,简直可以让Excel飞起来
    微软在UserVoice上运营着⼀个反馈论坛,每个⼈都可以在这⾥提交新点⼦供他⼈投票。票数最⾼的功能请求是“将Python作为Excel的⼀门脚本语⾔”,其得票数差不多是第⼆名的两倍。尽管⾃2015年这个点⼦发布以来并没有什么实质性进展,但在2020年年末,Python之⽗GuidovanRoss......
  • Pandas数据处理
    Pandas数据处理1.操作行名和列名(1)设置某一列为行名df.set_index(列名,drop=布尔值)#drop表示是否删除这一列importpandasaspddata=[["0001",'苹果',5,'山东'],["0002",'香蕉',3,'海南'],["0003",'橙子......
  • 05-Excel初阶操作-学习笔记
    DATE函数函数格式:DATE(参数1,参数2,参数3)参数说明:参数1:年份;参数2:月份;参数3:日作用:将文本类型转换为正确的日期格式应用场景:身份证号提取出生日期其中,MID()是文本截取函数注意!如果输入2000-2-30使用date函数后会进行进位显示2000-3-1Year、Month、Day函数作用:日期拆分为......
  • excel基本操作:基础、数据条件格式、快捷键
    Excel有三个模式分别是选择模式、编辑模式和输入模式(有光标)=====》这些了解就够了,也是最基本的。1.快捷键:ctrl+shift+右三角   选择所有的直到右边没有空格的在体重的那个空格选择的时候,按住上面的组合键就会出现从体重那一列直到球员奖金那一列在按住ctrl+shift+下就......
  • python 输入文件夹路径,返回所有的层次结构 excel
    importosimportopenpyxlfromopenpyxl.stylesimportFontdefget_folder_structure(root_folder):folder_structure=[]forroot,dirs,filesinos.walk(root_folder):level=root.replace(root_folder,'').count(os.sep)indent=......
  • 【Python&GIS】基于Geopandas和Shapely计算矢量面最短路径
    ​    在GIS进行空间分析时经常会需要计算最短路径,我也是最近在计算DPC的时候有这方面的需求,刚开始直接是用面的中心点求得距离,但其对不规则或空洞面很不友好。所以今天跟大家分享一下基于Geopandas和Shapely计算矢量面最短路径,这里的最短即点/边的最短!原创作者:RS迷......
  • Pandas数据清洗处理分析
    Pandas是一个开源的Python数据分析库,它提供了快速、灵活且表达力强的数据结构,旨在使数据清洗和分析工作变得更加简单易行。以下是Pandas在数据清洗和分析中常用的一些功能:1.**数据加载**:Pandas可以读取多种格式的数据,包括CSV、Excel、SQL数据库、JSON等。2.**数据框(DataF......