Python数据分析案例15——超市零售购物篮关联分析(apriori)

这篇具有很好参考价值的文章主要介绍了Python数据分析案例15——超市零售购物篮关联分析(apriori)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

啤酒和纸尿裤的故事大多数人都听说过,纸尿裤的售卖提升了啤酒的销售额。

关联分析就是这样的作用,可以研究某种商品的售卖对另外的商品的销售起促进还是抑制的作用。


案例背景

本次案例背景是超市的零售数据,研究商品之间的关联规则。使用的自然是最经典的apriori算法。

数据展示,数据是一个excel表:

Python数据分析案例15——超市零售购物篮关联分析(apriori)

 id表示订单编号,id=1表示第一个订单的销售的商品,如图就是第一个订单卖出了柑橘类水果,人造黄油,即食汤,半成品面包四个商品,其他以此类推。

需要这代码演示数据的同学可以参考:数据


数据读取

导入包,设置

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline

pd.options.display.float_format = '{:,.4f}'.format   #设置小数显示4位
np.set_printoptions(precision=4)
plt.rcParams ['font.sans-serif'] ='SimHei'               #显示中文
plt.rcParams ['axes.unicode_minus']=False               #显示负号

读取案例数据

inputfile = '../data/GoodsOrder.csv'  # 输入的数据文件
data = pd.read_csv(inputfile,encoding = 'gbk')  # 读取数据
data.info()

Python数据分析案例15——超市零售购物篮关联分析(apriori)

可以看到是43367条样本。

对商品进行分类汇总,计算每类商品的销售数量,得到前10 的商品

group = data.groupby(['Goods']).count().sort_values('id',ascending=False)            # 对商品进行分类汇总
group.head(10)

 Python数据分析案例15——超市零售购物篮关联分析(apriori)

画柱状图展示;

plt.figure(figsize=(6,3),dpi=128)
sns.barplot(y=group.index[:10],x=group['id'][:10],orient="h")
plt.xlabel('商品订单量')
plt.ylabel('商品名称')
plt.xticks(fontsize=10,rotation=45)
plt.title("销售量前十商品订单数量")
plt.show()

 Python数据分析案例15——超市零售购物篮关联分析(apriori)

 可以看到卖得最多的是全脂牛奶,蔬菜等。


类别分析

读取每种商品对应的类别:

types = pd.read_csv('../data/GoodsTypes.csv',encoding = 'gbk')  # 读入数据
types.head()

Python数据分析案例15——超市零售购物篮关联分析(apriori)

 可以看到这个表格包含了所有商品对应的食物的总类别

这个表对上面分类汇总后的订单表进行合并:(放在excel里面实现这一步就是vlookup函数)

sort_links = pd.merge(group.reset_index(),types,on='Goods')  # 合并两个datafreame 
sort_links

Python数据分析案例15——超市零售购物篮关联分析(apriori)

 然后我们画出所有大类别商品的销售数量和的比例图:

(sort_links.groupby(['Types']).sum().reset_index()   #分组聚合
.sort_values('id',ascending = False)                #排序
.assign(ratio=lambda d:d['id']/d['id'].sum())[['Types','ratio']]  #计算比例
.set_index('Types').plot                          #画图
.pie(subplots=True,figsize=(8,8),autopct="%.2f%%",legend=False)
)

Python数据分析案例15——超市零售购物篮关联分析(apriori)

 可以看到每种大类商品的销售数量比例。


预处理

将原始数据进行合并,每个订单的商品都弄在一起

data['Goods'] = data['Goods'].apply(lambda x:','+x)
data = data.groupby('id').sum().reset_index()
data

Python数据分析案例15——超市零售购物篮关联分析(apriori)

 可以看到总共有9835个订单,每个订单里面的商品数量名称都不尽相同。

将上面的订单都变为列表,查看前五个

data['Goods'] = data['Goods'].apply(lambda x :x[1:].split(','))
data_list = list(data['Goods'])
data_list[:5]

Python数据分析案例15——超市零售购物篮关联分析(apriori)

 每个订单都是一个列表,装着所有的商品名称,数据准备完成,下面进行关联分析


关联分析

导入包,计算模型,得到结果。这里模型的最小支持度选为0.03,最小置信度选为0.4.

# 导入 apyori 模块下的 apriori 函数
from apyori import apriori
results = apriori(data_list, min_support=0.03, min_confidence=0.4)

打印结果,并装入数据框方便下面画图:

df=pd.DataFrame()
# 遍历结果数据
lis1=[];lis2=[];lis3=[];lis4=[]
for result in results:
    # 获取支持度,并保留3位小数
    support = round(result.support, 3)
    # 遍历ordered_statistics对象
    for rule in result.ordered_statistics:
        # 获取前件和后件并转成列表
        head_set = list(rule.items_base)
        tail_set = list(rule.items_add)
        # 跳过前件为空的数据
        if head_set == []:
                continue
        # 将前件、后件拼接成关联规则的形式
        related_catogory = str(head_set)+'→'+str(tail_set)
        # 提取置信度,并保留3位小数
        confidence = round(rule.confidence, 3)
        # 提取提升度,并保留3位小数
        lift = round(rule.lift, 3)
        # 查看强关联规则,支持度,置信度,提升度
        print(related_catogory, support, confidence, lift)
        lis1.append(related_catogory);lis2.append(support)
        lis3.append(confidence);lis4.append(lift)

Python数据分析案例15——超市零售购物篮关联分析(apriori)

 可以看到最终得到了5个关联规则。

变成数据框

df['related_catogory']=lis1
df['support']=lis2
df['confidence']=lis3
df['lift']=lis4
df=df.sort_values('lift',ascending = False)
df

Python数据分析案例15——超市零售购物篮关联分析(apriori)

 画图之前要对数据做一点变形,使用数据融合

df_bar=pd.melt(df,id_vars=['related_catogory'],var_name='变量名称',value_name='变量值')
df_bar

Python数据分析案例15——超市零售购物篮关联分析(apriori)

 或者数据堆叠方法,也是一样的效果:

#或者
df.set_index('related_catogory').stack().reset_index()

Python数据分析案例15——超市零售购物篮关联分析(apriori)

 画柱状图:(不喜欢这个颜色可以改palette这个参数。)

plt.figure(figsize=(9,3),dpi=128)
sns.barplot(x=df_bar.related_catogory,y=df_bar.变量值,hue=df_bar.变量名称,palette = "twilight")
plt.xticks(fontsize=8,rotation=10)
plt.xlabel('关联规则')
plt.show()

Python数据分析案例15——超市零售购物篮关联分析(apriori)

 5个关联规则对应的支持度,置信度,提升度都在这个图上了。


结论 

本次分析得到,买根‘’茎类蔬菜' 会促进['其他蔬菜']的销售量,其提升度最大,为2.247。

同样买['酸奶']会促进['全脂牛奶']的销售量。

买['根茎类蔬菜']促进['全脂牛奶']的销售量。

['热带水果']→['全脂牛奶']

['酸奶']→['全脂牛奶']


创作不易,看官觉得写得还不错的话点个关注和赞吧,本人会持续更新python数据分析领域的代码文章~(需要定制代码可私信)文章来源地址https://www.toymoban.com/news/detail-414352.html

到了这里,关于Python数据分析案例15——超市零售购物篮关联分析(apriori)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 以超市数据微案例-fineBI可视化分析

    一、入门案例: 2.分析思路: 数据清晰界面中添加毛利额计算 **所以在新增步骤之后,必须点击保存并更新,否则可视化界面中无法使用最新的数据 4、数据可视化分析 1)销售额最高的十大商品种类 为1-8月超市数据,商品名称--添加过滤条件 2)不同类别产品的销售额占比

    2024年01月19日
    浏览(43)
  • 数据分享|基于Python、Hadoop零售交易数据的Spark数据处理与Echarts可视化分析

    案例数据集是在线零售业务的交易数据,采用Python为编程语言,采用Hadoop存储数据,采用Spark对数据进行处理分析,并使用Echarts做数据可视化。由于案例公司商业模式类似新零售,或者说有向此方向发展利好的趋势,所以本次基于利于公司经营与发展的方向进行数据分析。

    2024年02月11日
    浏览(32)
  • 基于Python的大数据零售超市数据可视化平台-爬虫

    该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程、包运行成功以及课程答疑与微信售后交流群、送查重系统不限次数免费查重等福利! 软件开发环境及开发工具: 开发语言:python 使用框架:Django 前端技术:JavaScript、VUE.js(2.X)、css3 开发工具:

    2024年02月03日
    浏览(37)
  • BI零售数据分析:以自身视角展开分析

    随着零售业务不断扩展,市场竞争不断加剧,各层级的销售管理人员都急需一张能快速查看销售数据分析报表,能从中知道自己管辖内的业务最近或过去的情况,并依次为依据科学优化销售管理措施。这就要求零售数据分析报表信息足够多、数据足够直观易懂,最好是以浏览

    2024年02月07日
    浏览(25)
  • python数据分析案例——天猫订单综合分析

    前言 大家早好、午好、晚好吖 ❤ ~欢迎光临本文章 什么是数据分析 明确目的–获得数据(爬虫,现有,公开的数据)–数据预处理——数据可视化——结论 准备 环境使用: 在开始写我们的代码之前,我们要准备好运行代码的程序 Anaconda (python3.9) – 识别我们写的代码 开发工

    2024年02月03日
    浏览(31)
  • Python数据分析项目案例

    第一部分:数据类型处理 数据加载 字段含义: user_id:用户ID order_dt:购买日期 order_product:购买产品的数量 order_amount:购买金额 观察数据 查看数据的数据类型 数据中是否存储在缺失值 将order_dt转换成时间类型 查看数据的统计描述 在源数据中添加一列表示月份:astype(\\\'datetime64[M

    2024年02月11日
    浏览(35)
  • 零售数据分析方案:深度剖析人、货、场

    人,即会员分析、用户分析,通过分析获得直观的用户画像,了解目标用户群体的消费水平、喜好、频率,为销售营销决策提供必要的数据支持;货,即商品分析,包括但不限于分析商品结构、分析销售top10商品,分析各品类商品的销售趋势、销售额、毛利等;场,即门店分

    2024年04月23日
    浏览(26)
  • 母婴即时零售行业数据可视化分析

    对新晋父母来说,很多母婴用品如同一位贴心的助手,为他们的宝宝提供温暖和呵护。从婴儿床垫到可爱的拼图玩具,每一件用品都是为宝宝的成长和发展量身定制。对于繁忙的父母们而言,这些用品不仅帮助照顾孩子,更是为他们减轻了繁重的育儿负担。在家庭中,文字婴

    2024年02月12日
    浏览(28)
  • Python数据分析案例20——我国家庭资产影响因素分析

    本次案例较为简单,符合人文社科、经济学管理学等专业本科生适用。 本文的数据来源于 中国家庭金融调查( China Household Finance Survey , CHFS )是西南财经大学中国家庭金融调查与研究中心(下称中心)在全国范围内开展的抽样调查项目,由甘犁教授于 2009 年发起并领导,收

    2024年02月09日
    浏览(30)
  • 【Python数据分析案例】——中国高票房电影分析(爬虫获取数据及分析可视化全流程)

    案例背景 最近总看到《消失的她》票房多少多少,《孤注一掷》票房又破了多少多少… 于是我就想自己爬虫一下获取中国高票房的电影数据,然后分析一下。 数据来源于淘票票:影片总票房排行榜 (maoyan.com) 爬它就行。 代码实现 首先爬虫获取数据: 数据获取 导入包 传入网

    2024年01月20日
    浏览(152)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包