首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >PowerBI x Python 之关联分析(上)

PowerBI x Python 之关联分析(上)

作者头像
btharp
发布于 2021-08-31 08:34:01
发布于 2021-08-31 08:34:01
1.3K00
代码可运行
举报
文章被收录于专栏:PowerBI x PythonPowerBI x Python
运行总次数:0
代码可运行

前言

据说,全球零售业巨头沃尔玛在对消费者购物行为分析时发现,男性顾客在购买婴儿尿片时,常常会顺便搭配几瓶啤酒来犒劳自己,于是尝试推出了将啤酒和尿布摆在一起的促销手段。没想到这个举措居然使尿布和啤酒的销量都大幅增加了。这个“啤酒+尿布”的购物篮组合,就是关联分析的一个经典应用场景。简单来说,关联分析就是在大量数据中找到最常出现的组合。

关于Power BI如何做关联分析,网上已经有不少文章(如马老师之前的推文,以以及power bi星球等等),其中的核心是合并及userelationship。但以往这些PowerBI的案例里,纯用dax和PQ的技巧,只做出了两两之间的关联度,难以求出三个或者更多产品之间的关联度。所以本文介绍如何在PowerBI里借助Python快速求出频繁项集(关联度较大的组合)。

解决方案

对于本案,在PowerBI中使用Python有两种方法:一种是使用Py可视化控件,在控件里用Python直接作图;另一种是在PQ里处理数据,求出所需的频繁项集,再用PowerBI的原生控件进行可视化。本文先讲解前者。

本案的数据(BreadBasket,面包购物篮)结构如下。前两列是购物时间,Transaction是购物单编号,Item是物品。

首先选取Py可视化控件,拖动到画布上,然后再选中所需的字段,结果如下:

在Power Bi的下方出现了一个新的窗口(编辑器)。选中字段后,编辑器生成6行代码:意味着Pandas和matplotlib两个库默认导入,同时生成了包含所选字段的数据帧dataset。接下来,即可在编辑器中编辑代码。只要本地安装了库,都可以导入。而该控件要求代码最后必须显示图表,否则会提示出错。

Python进行关联分析有几个好用的库。在输入和输出数据的便捷性上,个人认为Mlxtend最合适。具体代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from  mlxtend.frequent_patterns import apriori 
from mlxtend.preprocessing import TransactionEncoder
import pandas as pd 
import matplotlib.pyplot as plt

data=dataset
data.Item=data.Item.str.lower() 
data=data.drop(data[data["Item"]=='none'].index) #删除无物品的记录

# 将数据集进行格式转换
orders_series = data.set_index("Transaction")["Item"]
transactions = []
temp_index = 0
for i, v in orders_series.items():
    if i != temp_index:
        temp_set = set()
        temp_index = i
        temp_set.add(v)
        transactions.append(temp_set)
    else:
        temp_set.add(v)

# 数据转码
te = TransactionEncoder()
te_ary = te.fit(transactions).transform(transactions)
df = pd.DataFrame(te_ary, columns=te.columns_)

# 求频繁项集
frequent_items=apriori(df,min_support=0.02,use_colnames=True) # 支持度为0.02
frequent_items["itemsets"]=frequent_items["itemsets"].apply(lambda x:[x for x in x]) # 频繁项集frozenset转list
frequent_items["itemsets"]=frequent_items["itemsets"].apply(lambda x:','.join(x)) # 频繁项集list转str
frequent_items=frequent_items.sort_values(["support"],ascending=False) # 按支持度降序排序
fi=frequent_items[frequent_items["itemsets"].str.contains(",")] # 筛选出多于1个物品的频繁项集

# 作图
x=fi["itemsets"]
y=fi["support"]
y_label = ["{:.3f}".format(_y) for _y in y] # 横坐标标签
plt.bar(fi["itemsets"],fi["support"],  align='center', alpha=0.5) # 作图
plt.xticks(x, rotation=60) # 设置标签旋转角度
# 添加横坐标
for a, b, label in zip(x, y, y_label):
    plt.text(a, b, label, ha='center', va='bottom')
plt.show()

点击运行,我们就得到以频繁项集为横坐标,支持度(出现概率)为纵坐标的柱状图:

优缺点

正如上文提到,本方法直接求出的是出现概率最大的物品组合,组合中物品数量2个起,上不封顶。在整体层面的指导意义更大。此外,使用可视化Py控件,可以直接参与不同控件之间的联动。如下图所示,增加了日期切片器,数据可以即时变化。

不足的地方主要在于Python作图的风格与Power BI的整体风格不一致,而且调整难度比较大。而且只能被动联动,而不能主动联动。下一篇将介绍PQ的方法,能更好地克服控件法的这些不足。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-09-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 PowerBI x Python 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Power BI x Python 关联分析(下)
上回提到,Power BI借助Python做关联分析,可以轻松地找出物品中的频繁项集,且该频繁项集内的物品数量不限于2个。实现方式既可以通过Power BI里添加Python可视化控件直接生成Python式图表,也可在PQ里借助Python处理数据。前者最大的好处体现在与切片器联动中,是即时计算新的频繁项集。不足在于Python图表的风格与Power BI不一致,而且由于直接输出Python图(没有输出数据源),不便于开展其他分析。后者,正好解决了这些不足。
btharp
2021/08/31
1.2K0
【数据挖掘 | 关联性分析】万字长文详解关联性分析,详解Apriori算法为例,确定不来看看?
数据挖掘中的关联分析是一种用于发现数据集中不同项之间的关联关系的方法。关联分析通常用于在大规模数据集中发现频繁项集和关联规则。总的来说,关联规则通过量化的数字决定某物品甲对物品乙的出现有多大的影响。该模式属于描述性模式,属于**无监督学习**的方法
计算机魔术师
2023/10/26
5.1K0
【数据挖掘 | 关联性分析】万字长文详解关联性分析,详解Apriori算法为例,确定不来看看?
机器学习算法:关联规则分析
今天给大家分享一个经典的机器学习算法:关联规则分析,从理论到代码到实战,全部拉满。
皮大大
2022/04/18
2.3K0
机器学习算法:关联规则分析
通过案例理解Apriori算法
Apriori算法是一种经典的关联规则挖掘算法,用于发现数据集中的频繁项集和关联规则。在本文中,我们将结合一个具体的案例和代码详细讲解Apriori算法的原理和实现。
GeekLiHua
2025/01/21
4300
关联规则挖掘:Apriori算法的深度探讨
Apriori算法是一种用于挖掘数据集中频繁项集的算法,进而用于生成关联规则。这种算法在数据挖掘、机器学习、市场篮子分析等多个领域都有广泛的应用。
TechLead
2023/10/21
1.3K0
关联规则挖掘:Apriori算法的深度探讨
还记得啤酒和尿不湿的故事吗?我用Python带你一起玩玩关联规则!
大部分朋友应该听过“啤酒”和“尿布”的故事——超市分析顾客的商品购买记录,发现“啤酒”和“尿布”经常被一起购买,背后的原因是美国家庭婴儿一般由母亲在家照顾,年轻的父亲到超市购买尿布时会顺便买上自己喜欢的啤酒(暂且不论故事的真实性)。
1480
2019/07/22
1K0
还记得啤酒和尿不湿的故事吗?我用Python带你一起玩玩关联规则!
机器学习算法-关联规则分析
关联分析是一种从大规模的数据集中寻找有趣关系的方法。一个经常被用到关联分析的例子:购物篮分析。通过查看哪些商品经常在一起被顾客购买,可以帮助商店去了解用户的购买行为。
皮大大
2023/08/23
5730
啤酒和尿布放在一起卖得更好?来看看这个故事背后的Apriori算法
Apriori算法号称是十大数据挖掘算法之一,在大数据时代威风无两,哪怕是没有听说过这个算法的人,对于那个著名的啤酒与尿布的故事也耳熟能详。但遗憾的是,随着时代的演进,大数据这个概念很快被机器学习、深度学习以及人工智能取代。即使是拉拢投资人的创业者也很少会讲到这个故事了,虽然时代的变迁令人唏嘘,但是这并不妨碍它是一个优秀的算法。
TechFlow-承志
2020/05/14
1.4K0
数据挖掘系列(2)--关联规则FpGrowth算法
上一篇数据挖掘系列(1)关联规则挖掘基本概念与Aprior算法介绍了关联规则挖掘的一些基本概念和经典的Apriori算法,Aprori算法利用频繁集的两个特性,过滤了很多无关的集合,效率提高不少,但是我们发现Apriori算法是一个候选消除算法,每一次消除都需要扫描一次所有数据记录,造成整个算法在面临大数据集时显得无能为力。今天我们介绍一个新的算法挖掘频繁项集,效率比Aprori算法高很多。   FpGrowth算法通过构造一个树结构来压缩数据记录,使得挖掘频繁项集只需要扫描两次数据记录,而且该算法不需要生
小莹莹
2018/04/23
1.4K0
数据挖掘系列(2)--关联规则FpGrowth算法
让机器猜猜你喜欢的歌手-R关联分析
作者 CDA 数据分析师 关联规则挖掘是数据挖掘中成果颇丰而且比较活跃的研究分支。采用关联模型比较典型的案例是“尿布与啤酒”的故事。在美国,一些年轻的父亲下班后经常要到超市去买婴儿尿布,超市也因此发现了一个规律,在购买婴儿尿布的年轻父亲们中,有30%~40%的人同时要买一些啤酒。超市随后调整了货架的摆放,把尿布和啤酒放在一起,明显增加了销售额。同样的,我们还可以根据关联规则在商品销售方面做各种促销活动。 除此以外,关联规则挖掘还经常被用于: · 电信套餐的捆绑销售 · 歌曲推荐或者视频的“猜你喜
CDA数据分析师
2018/02/26
9710
让机器猜猜你喜欢的歌手-R关联分析
【数据挖掘 | 关联规则】FP-grow算法详解(附详细代码、案例实战、学习资源)
摘要: 本系列旨在普及那些深度学习路上必经的核心概念,文章内容都是博主用心学习收集所写,欢迎大家三联支持!本系列会一直更新,核心概念系列会一直更新!欢迎大家订阅
计算机魔术师
2023/12/18
2.5K0
【数据挖掘 | 关联规则】FP-grow算法详解(附详细代码、案例实战、学习资源)
关联规则(一):基本原理
参数化方法包括分类、回归等模型,优点是用少量的参数简化了建模问题,主要缺点是初始假设在许多实际问题中不成立,导致误差过大。
fireWang
2019/05/15
3.3K0
Apriori算法介绍(Python实现)
导读: 随着大数据概念的火热,啤酒与尿布的故事广为人知。我们如何发现买啤酒的人往往也会买尿布这一规律?数据挖掘中的用于挖掘频繁项集和关联规则的Apriori算法可以告诉我们。本文首先对Apriori算法进行简介,而后进一步介绍相关的基本概念,之后详细的介绍Apriori算法的具体策略和步骤,最后给出Python实现代码。 1.Apriori算法简介 Apriori算法是经典的挖掘频繁项集和关联规则的数据挖掘算法。A priori在拉丁语中指"来自以前"。当定义问题时,通常会使用先验知识或者假设,这被
llhthinker
2018/03/12
4K0
Apriori算法介绍(Python实现)
你不懂的关联规则
支持度: 支持度是一个百分比,指某个商品组合出现的次数与总次数之间的比例,支持度越高表示该组合出现的几率越大。
润森
2019/08/29
1.4K0
你不懂的关联规则
机器学习|关联规则与购物篮分析实战
客户A企业是一家全球知名家具和家居零售商,销售主要包括座椅/沙发系列、办公用品、卧室系列、厨房系列、照明系列、纺织品、炊具系列、房屋储藏系列、儿童产品系列等约10,000个产品。为了维持顾客忠诚度、扩大销售,A企业希望通过顾客已有的购买记录,为顾客推荐更多的产品。请使用关联规则的方法,实现客户的需求。
数据STUDIO
2021/06/24
1.9K0
第10章 关联分析和序列挖掘 笔记
关联分析是发现交易数据内有趣联系的一种方法,比如著名的“啤酒-尿布”。频繁序列模式挖掘,可以预测购买行为,生物序列等等。
用户1075469
2022/03/04
5920
第10章 关联分析和序列挖掘 笔记
关联推荐:啤酒怎么爱上尿布?
联系是普遍存在的,关联的存在本身是有价值的,在电商推荐中关联推荐是最简单最直接有效的。关联推荐的核心有三度:支持度,置信度,提升度.
herain
2022/04/27
5250
关联推荐:啤酒怎么爱上尿布?
机器学习(三) 关联规则R语言实战 Apriori
关联规则背景 关联规则来源 上个世纪,美国连锁超市活尔玛通过大量的数据分析发现了一个非常有趣的现象:尿布与啤酒这两种看起来风马牛不相及的商品销售数据曲线非常相似,并且尿布与啤酒经常被同时购买,也即购买尿布的顾客一般也同时购买了啤酒。于是超市将尿布与啤酒摆在一起,这一举措使得尿布和啤酒的销量大幅增加。 原来,美国的妇女通常全职在家照顾孩子,并且她们经常会嘱咐丈夫在下班回家的路上为孩子买尿布,而丈夫在买尿布的同时又会顺手购买自己爱喝的啤酒。 注: 此案例很精典,切勿盲目模仿案例本身,而应了解其背后原理。它发生
Jason Guo
2018/06/20
2.8K0
电子商务数据挖掘的关联性
关联,其实很简单,就是几个东西或者事件是经常同时出现的,“啤酒+尿布”就是非常典型的两个关联商品。 所谓关联,反映的是一个事件和其他事件之间依赖或关联的知识。当我们查找英文文献的时候,可以发现有两个英文词都能形容关联的含义。第一个是相关性relevance,第二个是关联性association,两者都可以用来描述事件之间的关联程度。其中前者主要用在互联网的内容和文档上,比如搜索引擎算法中文档之间的关联性,我们采用的词是relevance;而后者往往用在实际的事物之上,比如电子商务网站上的商品之间的关联度我们
机器学习AI算法工程
2018/03/09
1.2K0
Apriori 算法-如何进行关联规则挖掘
据说,在美国西部的一家连锁超市发现,很多男人会在周四购买尿布和啤酒。这样超市就可以将尿布与啤酒放在一起卖,便可以增加销售量。
huofo
2022/03/18
8630
Apriori 算法-如何进行关联规则挖掘
推荐阅读
相关推荐
Power BI x Python 关联分析(下)
更多 >
领券
一站式MCP教程库,解锁AI应用新玩法
涵盖代码开发、场景应用、自动测试全流程,助你从零构建专属AI助手
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档