燃气灶行业分析、淘宝平台销售分析

news2024/11/15 9:01:29

内容:1.燃气灶(不含集成灶)整体行业分析  2.淘宝平台销量分析  3.针对性建议(涉及商业信息就略)

一、基本情况

(一)产品定义:

以液化石油气(液态)、人工煤气、天然气等气体燃料进行直火加热的厨房用具

按气源:分为煤气灶、液化气灶、天然气灶;

按灶眼:分为单灶、双灶和多眼灶。

(二)销售渠道

主要分为线上、线下模式。

线下:商超、专卖店(授权店)、加盟店、个体等其他店铺

线上:各网购平台、直播平台,以及占比较小、渠道来源复杂的私域流量(厂家的推手、有粉丝的个人、朋友圈带货达人等)

从一些咨询机构获取的整体数据来看:

2022年数据,线上零售989万台,占总46.0%,较2021年增加了5%;线下零售1162万台,占比54.0%;

目前来看:

线下渠道占比五成多,占比呈逐年减弱趋势;

线上平台占比四成多,并呈逐年上升趋势,有望超过线下渠道,未来的整体市场,会被各类线上、直播逐步挖墙脚;

咨询机构虽然有比较宽泛的渠道和信息来源,但数据也不一定完全准,但大趋势是对的!

(三 )当前行业现状

历史:我国燃气灶起步于1980年,近几十年以来,国内外各种燃具进入市场;

市场整体需求在下降,原因可能是①其他炊具替代影响(**集成灶**)②人口增长放缓③房地产销量下滑

未来大趋势:燃气灶市场较为成熟,客户需求主要在①旧灶换新灶②家庭必备③小餐饮店需要

总体来看:头部的品牌,已占据大部分销量,并且头部效应会愈发明显,小品牌生存空间将进一步缩小;

整体销量图

近年来,2017年为顶峰,销量3186.8万台,零售额215.2亿元。2018年以来,逐年下降,至2020年销量2803.9万台,

零售额为188.4亿元;

近期数据,2022年,国内燃气灶零售量为2151万台,较上年下降15%。

 

销售额图

2022年,国内燃气灶零售额约为170亿元,与零售量一样有所下滑,但销售额下滑比例比数量少,证明平均单价有所上升;

二、线上情况分析

纸上得来终觉浅,咨询机构的数据可信又不能完全信,实际干一票看看情况:

搜了一下淘宝关键词:“燃气灶不锈钢单炉”的数据;

基于以下假设:

假设1:大品牌应该有自己的线上销售团队,如果线下销售靠前的牌子,线上不会太差;

假设2:线上销售额,占比约一半,可以代表整体的销售排名;

拟爬取淘宝和1688的销售数据:

2.1爬数据

大概长这样

基本处理:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from pyecharts.charts import Bar
from pyecharts.options import *
plt.rcParams['font.sans-serif'] = ['SimHei']

# 只将一些需要的列导入,重命名
path = "C:/Users/Administrator/Downloads/rqz.xlsx"
df = pd.read_excel(path,usecols=[0,3,4,5,6,7,8,9,10,11,12,13])
pd.set_option('display.max_columns',10)
df.columns = ['title','advan1','advan2','price1','advan3','price2','sales','city','province','shop_name','promo1','promo2']
# 先把完全重复的删掉
df = df.drop_duplicates(subset=['title','shop_name','sales','price1','price2'],keep='first')
# 查看缺失值
# import missingno as msgo
# msgo.bar(df)

同一个店铺,可能有多个商品被搜到,并且还有价格一样但标题不同的,还有同一个店完全一样的链接,被搜到多次,毕竟能爬100个页面,数据约3072条; 知道这个很重要,因为在后面的数据处理和分析中,会被这东西坑!

advan--short for advantage ,每个商品可以放最多三个标签;
promo--promotion ,促销标签,最多可以有两个,略微复杂; 

2.1.2处理价格、销量

# 抓的数据,整数和小数部分,是分开的
df['price'] = df['price1'] + df['price2']
df.drop(['price1','price2'],axis=1,inplace=True)

# 处理销售数量
def clean_sales(df):
    if '看过' in df.sales:
        return 0
    elif '万' in df.sales:
        return int(df.sales.split('万')[0]) * 10000
    elif '+' in df.sales:
        return int(df.sales.split('+')[0])
    else:
        return int(df.sales.split('人')[0])

df['sale_amount'] = df.apply(clean_sales,axis=1)
df.drop('sales',axis=1,inplace=True)

销量按照最少的来取,这些销量要看看规则,例如2万+人付款,200+人付款,很少的几十个以内的,会显示具体数字;还有极少部分多少人看过,选了两个点进去,发现销量都比较少,想着销量真不错,也不至于不写多少人买,直接写0算了;

2.2销量动态图

# 选择销量、销售额靠前的 逆序是为了横向柱状图从大到小显示
groups_1 = df.groupby('shop_name')['money'].sum().sort_values(ascending=True)[-30:]
groups_2= df.groupby('shop_name')['sale_amount'].sum().sort_values(ascending=True)[-30:]

from pyecharts.charts import Bar,Grid,Page
bar_1 = Bar()
bar_1.add_xaxis(list(groups_1.index))
bar_1.add_yaxis("销售额",list(groups_1.values))


bar_1.reversal_axis() # 翻转x和y轴
bar_1.set_global_opts(title_opts=opts.TitleOpts(title='销售额'),
                    xaxis_opts=opts.AxisOpts(name='店铺名称'),
                    yaxis_opts=opts.AxisOpts(name='抓取的销售额'),
                    datazoom_opts=[opts.DataZoomOpts(type_='inside',orient='horizontal',xaxis_index=0,pos_left='10%'),
                                   opts.DataZoomOpts(type_='inside',orient='vertical',xaxis_index=1,pos_right='10%'),
                                  ],
                    legend_opts=opts.LegendOpts(type_='plain',pos_left="30%")
                      
                    )
bar_1.set_series_opts(label_opts=opts.LabelOpts(position="right"), # 设置数值显示在右侧
                    markline_opts=opts.MarkLineOpts(
                        data=[
                        opts.MarkLineItem(type_='max', name='最大值'),
#                         opts.MarkLineItem(type_='min', name='最小值'),
                        opts.MarkLineItem(type_='average', name='平均值')
                            ],linestyle_opts=opts.LineStyleOpts(color='red',opacity=.5,width=2,type_='dashed')
                    )
                     )
# 设置第二个柱状图
bar_2 = Bar()
bar_2.add_xaxis(list(groups_2.index))
bar_2.add_yaxis("销量",groups_2.values.tolist())
bar_2.set_series_opts(label_opts=opts.LabelOpts(position="right"),
                     markline_opts=opts.MarkLineOpts(
                        data=[
                        opts.MarkLineItem(type_='max', name='最大值'),
                        opts.MarkLineItem(type_='average', name='平均值')
                            ],linestyle_opts=opts.LineStyleOpts(color='grey',width=2,type_='dashed'))
                    
                )
bar_2.set_global_opts(
                        title_opts=opts.TitleOpts(title='销量'),
                    xaxis_opts=opts.AxisOpts(name='店铺名称'),
                    yaxis_opts=opts.AxisOpts(name='抓取的销量'),

                    )  
bar_2.reversal_axis()
# # 显示图像
grid = Grid(init_opts=opts.InitOpts(width="1600px",height="1200px"))
grid.add(bar_1,grid_opts=opts.GridOpts(pos_bottom='49%'))
grid.add(bar_2,grid_opts=opts.GridOpts(pos_top='60%'))
grid.render_notebook()

2.3 竞争对手地域分析

competitor = group_place.set_index(['province','city'],inplace=False)
# 添加临时辅助列
temp=competitor.groupby(level=0)['shop_name'].sum()
hehe=pd.merge(left=competitor,right=temp,left_index=True,right_index=True,how='left')
hehe2 = hehe.sort_values(['shop_name_y','shop_name_x'],ascending=False)

col_1 = 100*(hehe2['sale_amount'].cumsum()/hehe2['sale_amount'].sum()).values
col_1 = [str(round(i,2))+'%' for i in col_1]

# 临时决定多加一列
col_3 = 100*(hehe2['sale_amount']/hehe2['sale_amount'].sum()).values
col_3= [str(round(i,2))+'%' for i in col_3]

col_2 = 100*(hehe2['shop_name_x']/hehe2['shop_name_x'].sum()).values
col_2= [str(round(i,2))+'%' for i in col_2]
hehe2.insert(loc=1,column='销量占总体比',value=col_3)
hehe2.insert(loc=2,column='销量累计占比',value=col_1)
hehe2.insert(loc=4,column='店铺数占总体比',value=col_2)
hehe2.drop(columns='shop_name_y',inplace=True)
hehe2.columns=['销量','销量占比','销量累计占比','店铺数量','店铺数占总体比']

 2.4不同店铺分析

旗舰店(一般是一手厂家)、专卖店企业店(一级、二级授权店铺)、大型商超店(仅限苏宁易购、天猫超市、天天特卖工厂)、其他普通个人店(包含很多名字假装是直营店,实际只是忽悠人的个人店,也包含一些无法简单判定是否为二级授权的店铺,都归为杂牌店)的销量分析;后续发现,可能分的不够准,不同店铺的类型需要仔细查看规律,有个什么国货甄选旗舰店,好像也得划分到大型商超店里;

def map_shop(ss):
    if "苏宁易购" in ss:
        return 3
    if "旗舰店" in ss:
        return 1
    elif "专卖店" in ss or "企业店" in ss:
        return 2
    elif "天猫超市" in ss or "天天特卖工厂" in ss:
        return 3
    else:
        return 5
df['shop_type'] = df['shop_name'].apply(map_shop)

temp_2 = df.groupby('shop_type').agg({"sale_amount":sum,'money':sum,"shop_type":'count'})
pd.set_option('display.float_format', lambda x: '%.4f' % x)
new_names = ['旗舰店','专卖\企业店','苏宁天猫淘工厂','杂牌店']
temp_2.index = new_names

temp_2.sort_values(by='money',ascending=False,inplace=True)
# 销量占比
va1 = 100*(temp_2['sale_amount']/temp_2['sale_amount'].sum()).values
va1 = [str(round(i,2))+'%' for i in va1]
# 销售额占比
va2 = 100*(temp_2['money']/temp_2['money'].sum()).values
va2 = [str(round(i,2))+'%' for i in va2]
# 蓝海值计算
temp_2.insert(loc=1,column='销量占比',value=va1)
temp_2.insert(loc=3,column='销售额占比',value=va2)
temp_2['销量蓝海值'] = temp_2['sale_amount']/temp_2['shop_type']
temp_2['销售金额蓝海值'] = temp_2['money']/temp_2['shop_type']
temp_2

算了,园子里有,去那边看啦,不想复制了;

燃气行业分析、商品运营前景分析 - 勁 - 博客园 (cnblogs.com)

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

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

相关文章

DRF——router路由,parser解析器

文章目录 路由解析器1.JSONParser2.FormParser3.MultiPartParser4.FileUploadParser 路由 在之前进行drf开发时,对于路由我们一般进行两种配置: 视图继承APIView from django.urls import path from app01 import viewsurlpatterns [path(api/users/, …

趣味算法------尾部零的个数(C语言,python双重解法)

目录 题目描述&#xff1a; 解题思路&#xff1a; 具体代码&#xff1a; 注意&#xff1a; 题目描述&#xff1a; 给出数字 n(0<n<1000000)&#xff0c;计算出 n 阶乘尾部零的个数。 输入输出格式 输入格式 一个整数。 输出格式 一个整数。 输入输出样例 输入 11 输…

技术分享-商城篇-用户订单管理(十五)

前言 在前面的文章中&#xff0c;我们详细阐述了商品模块、购物模块、支付模块等B2B2C&#xff08;Business-to-Business-to-Consumer&#xff09;电商中核心基础模块&#xff0c;接下来我们来聊一下基础模块中最后一个环节订单模块&#xff0c;订单模块属于购物体系闭环内容&…

C语言典型例题50

《C程序设计教程&#xff08;第四版&#xff09;——谭浩强》 例题4.2 使用do……while语句循环求1234……100&#xff1b; 代码&#xff1a; //《C程序设计教程&#xff08;第四版&#xff09;——谭浩强》 //例题4.2 使用do……while语句循环求1234……100&#xff1b;#incl…

Axure RP实战:打造高效滑块验证码

Axure RP在验证码设计中的应用(滑块拖动) 前言 在数字化时代&#xff0c;验证码已成为保护用户账户安全和防止恶意攻击的重要工具。 它不仅提高了系统的安全性&#xff0c;还增加了用户对平台的信任度。 然而&#xff0c;验证码的设计并非易事&#xff0c;它需要在安全性和…

适用于 Windows 10 的最佳数据恢复免费软件是什么?

有没有适用于 Windows 10 的真正数据恢复免费软件&#xff1f;这篇文章将讨论这个话题&#xff0c;并分享什么是适用于 Windows 10/11/8.1/8/7/Vista/XP 的最佳数据恢复工具。 有没有适用于 Windows 10 的真正免费的数据恢复软件&#xff1f; 丢失重要数据&#xff0c;无论是由…

C++调用Python和numpy第三方库计算MFCC音频特征实现封装发布

文章目录 项目简介环境准备执行步骤1.新建python虚拟环境2.虚拟环境运行下python代码3.迁移虚拟环境4.编写Cmakelists.txt5.编写C代码6.编译项目7.测试 项目简介 深度学习程序的边缘部署以性能绝佳的C为主(⊙﹏⊙)&#xff0c;但遇到项目开发周期短&#xff0c;则以功能优先&am…

五、Centos7-安装Jenkins--吃灰去吧

克隆了一个base的虚拟机&#xff0c;用来安装Jenkins 2023年11月&#xff0c;Jenkins不支持centos7了。我们只是学习用&#xff0c;先看看吧。 &#xff08; 另一个人用别的操作系统安装的jenkins&#xff0c;可以参考 版权声明&#xff1a;本文为博主原创文章&#xff0c;…

mq可靠性

为了解决阻塞可以采用数据持久化 交换机持久化-可以在配置的时候配置durable 队列持久化-mq在设置时默认就是持久化&#xff0c;spring默认也是持久化 消息持久化&#xff0c;不是默认&#xff0c;需要在发送时对delivery_mode改为2&#xff08;持久&#xff09;&#xff0c;默…

系统架构师(每日一练23)

每日一练 1.软件活动主要包括软件描述、()、软件有效性验证和()&#xff0c;()定义了软件功能及使用限制。答案与解析 问题1 A.软件模型 B.软件需求 C.软件分析 D.软件开发 问题2 A.软件分析 B.软件测试 C.软件演化 D.软件开发 问题3 A.软件分析 B.软件测试 C.软件描述 D.软…

事件监听查看、监听器删除方法

前言 最近在开发过程中遇上了不知在哪加入的点击事件&#xff0c;导致页面跳转发生问题&#xff0c;需要找到该点击事件并将其取消掉。以下就是在完成该目标过程中使用、尝试的方法。 1、事件查看 使用网页开发者工具&#xff08;F12&#xff09;选取想查看的元素找到工具中…

03_React 收集表单数据和 组件生命周期

React 收集表单数据和 组件生命周期 一、收集表单数据1、例子1.1 需求&#xff1a;定义一个包含表单的组件&#xff0c;输入用户名密码后&#xff0c;点击登录提示输入信息 2、理解&#xff1a;包含表单的组件分类2.1 受控组件2.2 非受控组件 二、高阶函数\_函数柯里化1、复习-…

MATLAB 手动实现点云投影滤波器 (76)

点云投影到邻近的精确拟合平面,减少噪声点,此为投影滤波器 MATLAB 手动实现点云投影滤波器(76) 一、投影滤波器简介二、实现步骤二、算法实现1.代码2.效果这里用到的投影方法和平面拟合方法以及生成平面方法都在以往文章有所实现,有兴趣可参考: MATLAB点云处理总目录 一…

Paimon Flink本地读取数据报错

1.idea本地读取paimon 用idea在本地读取paimon的表时需要添加的依赖除了官网提出的和hadoop相关的&#xff0c;paimon-flink之类相关的除外还需要其他额外依赖 import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment; import org.apache.flink.tabl…

大模型从入门到精通——词向量及知识库介绍

词向量及知识库介绍 1.词向量 1.1 什么是词向量 词向量是一种将单词表示为实数向量的方式。每个单词通过一个高维向量来表示&#xff0c;向量的每一维都是一个实数&#xff0c;这些向量通常位于一个高维空间中。词向量的目标是将语义相似的单词映射到相邻的向量空间中&#…

【STM32 HAL】多串口printf重定向

【STM32 HAL】多串口printf重定向 前言单串口printf重定向原理实现CubeMX配置Keil5配置 多串口printf重定向 前言 在近期项目中&#xff0c;作者需要 STM32 同时向上位机和手机发送数据&#xff0c;传统的 printf 重定向只能输出到一个串口。本文介绍如何实现 printf 同时输出…

回归预测|基于北方苍鹰优化混合核极限学习机的数据预测Matlab程序NGO-HKELM 多特征输入单输出

回归预测|基于北方苍鹰优化混合核极限学习机的数据预测Matlab程序NGO-HKELM 多特征输入单输出 文章目录 前言回归预测|基于北方苍鹰优化混合核极限学习机的数据预测Matlab程序NGO-HKELM 多特征输入单输出 一、NGO-HKELM 模型1. NGO&#xff08;北方苍鹰优化算法&#xff09;2. …

DRF——pagination分页模块

文章目录 分页继承APIView类用法1.PageNumberPagination2.LimitOffsetPagination3.CursorPagination 继承GenericAPIView派生类用法1.PageNumberPagination2.LimitOffsetPagination3.CursorPagination 分页 在查看数据列表的API中&#xff0c;如果 数据量 比较大&#xff0c;肯…

RSA非对称性加密02: 加密redis的连接密码(下)

全文目录,一步到位 1.前言简介1.1 专栏传送门1.1.2 上文传送门 2. 使用方式2.1 使用druid自带的RSA加密工具2.1.1 引入druid依赖2.1.2 原yml配置(对比使用)2.1.2 新yml配置 2.2 springboot的redis配置类2.2.1 例如在RedisConfig中2.2.2 设置序列化与反序列化代码示例如下: 2.3 …

初始redis:Zset有序集合

Set作为集合&#xff0c;有两个特点&#xff1a;唯一且无序。 Zset是有序集合&#xff0c;在保证唯一的情况下&#xff0c;是根据什么来排序的呢&#xff1f;排序的规则是什么&#xff1f; Zset中的member引入了一个属性&#xff0c;分数&#xff08;score&#xff09;&#…