百木园-与人分享,
就是让自己快乐。

乐高玩具数据分析

一、选题的背景

(1)为什么要选择此选题?

   乐高是一个很受欢迎的玩具积木品牌,它们通常是成套出售的,用来制作特定的物品,每一套都包含许多不同形状、大小和颜色的零件。它是一个有趣的数据集合,它包含了多年来集合的综合列表,以及每个集合包含的部分数。提供了许多可供探索的空间,特别是因为“集合”文件包含了集合首次发布的年份。集合的大小是如何随时间变化的?什么颜色与女巫主题有关? 你能不能通过一套积木来预测它的主题? 哪一套中使用最多的部件?什么组合里有最稀有的部件? 乐高玩具的颜色是否会随着时间的推移而改变?

 

(2)要达到的数据分析目标是什么?

中国大陆市场是乐高最重要的市场之一,2020-2022年乐高在中国大陆新增直营门店数量占全球新增数量的比例超过一半。中国玩具市场规模稳步扩大,乐高在全球玩具市场占有率为68.6%,在大陆市场占有率为42.3%,仍有较大的提升空间,创痛积木玩具同质化严重,乐高积极布局IP类产品,拥有全球顶级IP储备,进一步发掘中国本土IP,国产积木新国潮IP崛起可期。同时乐高布局STEAM教育类赛道,以14款积木、400+课程、4大赛事构建完备的STEAM产品体系;国内STEAM教育品牌 以积木为基础,依托高级机器人与编程课程和产品,存在破局可能,贝尔机器人、乐博乐博、童程童美等品牌率先实现规模布局,全国线下运营门店均超200家。中国大陆是其最重要的市场之一,国内市场占有率仍有提升空间。目前处于二次增长期,在中国大陆本土化加速。门店聚焦一二线城市,偏爱大型商超。我们统计了截至2022年6月28日国内各类乐高门店的 信息,可以看到大多数门店集中于一二线城市,并 且多位于大型商超。随着国内人均可支配收入提高 ,下沉市场仍有广阔发展空间。乐高竞品IP产品全盘点。我们盘点了美高(MEGA)积木(国际市场占有率第二的厂商)以及13家国产积木厂商所拥有的IP产品,并与乐高IP产品进行了对比分 析,几乎涵盖了国内积木市场的全部成熟参与者。

将与儿童的互动放在首位。作为一家积木设计与制造商,产品自带教育属性,产品的设计与制造本身就是其社会影响的一部分。因此乐高可 持续发展报告将与儿童的互动放在第一章,阐述通过产品履行社会职责的事例。积木的环保议题。一方面,积木是一种耐用品;另一方面,传统积木多由塑料制成。乐高已经开始使用生物材料替换塑料,并且对积木包装 进行替换,还通过其母公司不断投资可再生能源企业。对员工和供应商的突出重视。乐高在可持续发展报告中使用了较多篇幅阐述与员工和供应商的互动,这是社会责任的重要内容。

 

 

 

二、大数据分析设计方案

(1)本数据集的数据内容与数据特征分析

   三个数据集包含了不同的乐高组合中包含哪些部件的信息,它最初是为了帮助那些已经拥有一些乐高积木套的人弄清楚他们还能用自己的作品制造出什么其他玩具。

(2)数据分析的课程设计方案概述(包括实现思路与技术难点)

  Python 就不会在编译阶段做类型匹配检查。

  拿使用较多的 matplotlib 为列,整个图像为一个Figure 对象,在 Figure 对象中可以包含一个或多个 Axes对象,每个Axes对象都是一个拥有自己坐标系统的绘图区域。Axes 由 xaxis, yaxis, title, data 构成,xaxis 由坐标轴的线 ,tick以及label构成。

   麦肯锡思维中很重要的一条原理叫做金字塔原理,它的核心是层次化思考、逻辑化思考、结构化思考。

  金字塔:任何一件事情都有一个中心论点,中心论点可以划分成3~7个分论点,分论点又可以由3~7个论据支撑。层层拓展,这个结构由上至下呈金字塔状。

  核心法则:MECE,金字塔原理有一个核心法则MECE,全称 Mutually Exclusive Collectively Exhaustive,论点相互独立,尽可能多的列举。

  首先得有一个思考作为开始。这是什么意思?因为金字塔是从上而下,需要有一个中心论点,也就是塔尖。我们可以先提出一个问题,比如此产品的核心功能是某某功能吗?

  20%的分析过程决定80%的分析结果,抓住关键因素。  

  2.SQL分组,聚合,多表join操作,groupby, aggregate,join操作,大数据平台Hadoop,大数据架构,分布式存储,Mysql,hive 拉链表(dp 的状态 active 和 history)

  3.第一步应该是认真理解业务数据,可以试着理解去每个特征,观察每个特征,理解它们对结果的影响程度。然后,慢慢研究多个特征组合后,它们对结果的影响。明确各个特征的类型,如果这些数据类型不是算法部分期望的数据类型,你还得想办法编码成想要的。比如常见的数据自增列 id 这类数据,是否有必要放到你的算法模型中,因为这类数字很可能被当作数字读入。某些列的取值类型,虽然已经是数字了,它们的取值大小表示什么含义你也要仔细捉摸。因为,数字的相近相邻,并不一定代表另一种层面的相邻。找出异常数据,统计中国家庭人均收入时,如果源数据里面,有王建林,马云等这种富豪,那么,人均收入的均值就会受到极大的影响,这个时候最好,绘制箱形图,看一看百分位数。处理缺失值,现实生产环境中,拿到的数据恰好完整无损、没有任何缺失数据的概率,和买彩票中将的概率差不多。数据缺失的原因太多了,业务系统版本迭代, 之前的某些字段不再使用了,自然它们的取值就变为 null 了;再或者,压根某些数据字段在抽样周期里,就是没有写入数据……头疼的数据不均衡问题,理论和实际总是有差距的,理论上很多算法都存在一个基本假设,即数据分布总是均匀的。这个美好的假设,在实际中,真的存在吗?很可能不是!算法基于不均衡的数据学习出来的模型,在实际的预测集上,效果往往差于训练集上的效果,这是因为实际数据往往分布得很不均匀,这时候就要考虑怎么解决这些问题。

 

三、数据分析步骤

(1)数据源 

 数据集 :Rebrickable | Rebrickable - Build with LEGO

下载地址:LEGO Database 乐高数据库_数据集-阿里云天池 (aliyun.com)

下载sets.csv、themes.csv和colors.csv三个数据集。

 

 

(2)在乐高旗舰店,商品标题都有什么特点。可以看到标题中,\"积木\"、\"玩具\"、\"XX系列\"都被常常提到。同时\"送礼\"、\"创意\"、\"益智\"、\"收藏\"等也常出现。

 

 

 

 

pandas用.isna()或者.isnull()检查是否存在NaN。

 

# Explore Lego Sets 探索乐高玩具
%matplotlib inline
#create a summary of avarage number of parts by year:\'parts_by_year\'
#创建一份按年份列出的零件平均数量的摘要:\'parts_by_year\'
parts_by_year=df[[\'year\',\'num_parts\']].groupby(\'year\').mean()

#plot trends in average number of parts by year
#按年份绘制零件平均数量的趋势图
parts_by_year.plot()

 

 

 

# Exploring Colors 探索颜色
# How many distinct colors are available有多少种不同的颜色可用
num_colors=colors.rgb.size

# print num_colors
#打印
print(\'Number of distinct colors:\',num_colors)

 

#Transparent Colors in Lego Sets乐高玩具中的透明颜色
colors_summary=colors.groupby(\'is_trans\').count()
colors_summary

 

 

 

 

 

 

评估模型,对测试集进行评估

 

import stylecloud
from IPython.display import Image
# 绘制词云图
stylecloud.gen_stylecloud(
text=\' \'.join(text),
collocations=False,
font_path=r\"D:\\Python\\sets.csv\"
icon_name=\'fas fa-plane\',
background_color=\'pink\',
size=768,
output_name=\'词云图.png\'
)
Image(filename=\'词云图.png\')

 

 

 

 

 

 

 

 

 

 

data_pair=[list(z) for z in zip(cut_purchase.index.tolist(),cut_purchase.values.tolist())]
# 绘制饼图
piel=Pie()
piel.add(\'\',data_pair,radius=[\'35%\',\'60%\'])
piel.set_global_opts(title_opts=opts.TitleOpts(title=\'各个价格商品区间\'),
legend_opts=opts.LegendOpts(orient=\'vertical\',pos_top=\'15%\',pos_left=\'2%\'))
piel.set_series_opts(label_opts=opts.LabelOpts(formatter=\"{b}:{d}%\"))
piel.set_colors([\'#EF9050\',\'#3B7BA9\',\'#6FB27C\',\'#FFAF34\',\'#D7BFD7\',\'#00BFFE\',\'#7FFFAA\'])
piel.render_notebook()

 

玩具销量排名分析

 

 

 

 

 

  (3) 附完整程序源代码

  1 #导入模块包
  2 import pandas as pd
  3 import numpy as np
  4 import matplotlib.pyplot as plt
  5 from sklearn import linear_model
  6 import seaborn as sns#显示效果更优化
  7 import time 
  8 import jiebafrom pyecharts.charts
  9 import Bar, Line, Pie, Map, Pagefrom pyecharts
 10 import options as opts from pyecharts.globals
 11 import SymbolType 
 12 import stylecloud
 13 import keras
 14 from keras import layers
 15 from keras import models
 16 from keras.layers import Dense, Dropout, Activation, Flatten
 17 
 18 ##运行配置参数中的字体(font)为黑体(SimHei)
 19 matplotlib.rcParams[\'font.sans-serif\'] = [\'SimHei\']
 20 #运行配置参数总的轴(axes)正常显示正负号(minus)
 21 matplotlib.rcParams[\'axes.unicode_minus\']=False
 22 sns.set(font=\'SimHei\')
 23 
 24 #导入sets.csv包
 25 df = pd.read_csv(r\"D:\\python\\sets.csv\")
 26 df.head(10)
 27 
 28 #导入themes.csv包
 29 themes = pd.read_csv(r\"D:\\python\\themes.csv\")
 30 themes.head(10)
 31 
 32 #导入colors.csv包
 33 colors = pd.read_csv(r\"D:\\python\\colors.csv\")
 34 colors.head(10)
 35 
 36 # sets.csv的info() 数据集各列的数据类型,是否为空值,内存占用情况
 37 df=df.info()
 38 
 39 # themes.info()
 40 themes=themes.info()
 41 
 42 # colors.info()
 43 colors=colors.info()
 44 
 45 # 去除重复值
 46 df.drop_duplicates(inplace=True)
 47 df
 48 
 49 #删除不必要的列 id
 50 themes = themes.drop([\'id\'],axis=1)
 51 themes.head(1)
 52 
 53 # 对数值型字段进行描述性统计,并查看异常值
 54 df.describe()
 55 
 56 # 查看各字段的缺失值数量
 57 df.isna().sum()
 58 
 59 #大数据分析过程  
 60 #绘制每个特征的分布
 61 df.columns
 62 
 63 # value_counts 直接用来计算Series里面相同数据出现的频率
 64 pd.Series(df[\'name\']).value_counts()
 65 
 66 # 读取矩阵的长度
 67 df.shape
 68 
 69 # Exploring Colors 探索颜色
 70 # How many distinct colors are available有多少种不同的颜色可用
 71 num_colors=colors.rgb.size
 72 
 73 # print num_colors
 74 #打印
 75 print(\'Number of distinct colors:\',num_colors)
 76 
 77 #Transparent Colors in Lego Sets乐高玩具中的透明颜色
 78 colors_summary=colors.groupby(\'is_trans\').count()
 79 colors_summary
 80 
 81 # Explore Lego Sets 探索乐高玩具
 82 %matplotlib inline
 83 #create a summary of avarage number of parts by year:\'parts_by_year\'
 84 #创建一份按年份列出的零件平均数量的摘要:\'parts_by_year\'
 85 parts_by_year=df[[\'year\',\'num_parts\']].groupby(\'year\').mean()
 86 
 87 #plot trends in average number of parts by year
 88 #按年份绘制零件平均数量的趋势图
 89 parts_by_year.plot()
 90 
 91 merged[merged[\'set_num\'].isnull()].shape
 92 
 93 bar1 = (
 94     Bar(init_opts=opts.InitOpts(theme=\'dark\', width=\'1000px\',height =\'500px\'))
 95     .add_xaxis(shopname.index.tolist())
 96     .add_yaxis(\"\",shopname.values.tolist())
 97     .set_series_opts(
 98         label_opts=opts.LabelOpts(
 99                 is_show=True, 
100                 position=\'insideRight\',
101                 font_style=\'italic\'
102             ),
103         itemstyle_opts=opts.ItemStyleOpts(
104             color=JsCode(
105                 \"\"\"new echarts.graphic.LinearGradient(1, 0, 0, 0, 
106                  [{offset: 0,color: \'rgb(255,99,71)\'}, {offset: 1,color: \'rgb(32,178,170)\'}])\"\"\"
107             )
108         )
109     )
110     .set_global_opts(
111         title_opts=opts.TitleOpts(title=\"商家上线的商品数目Top20\"),
112         xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=45)),
113         legend_opts=opts.LegendOpts(is_show=True))
114     .reversal_axis()
115 )
116 bar1.render_notebook()
117 
118 bar=(
119     Bar(init_opts=opts.InitOpts(height=\'500px\',width=\'1000px\',theme=\'dark\'))
120     .add_xaxis(price_top.index.tolist())
121     .add_yaxis(
122         \'单价最高的商品\',
123         price_top.values.tolist(),
124         label_opts=opts.LabelOpts(is_show=True,position=\'top\'),
125         itemstyle_opts=opts.ItemStyleOpts(
126             color=JsCode(\"\"\"new echarts.graphic.LinearGradient(
127             0, 0, 0, 1,[{offset: 0,color: \'rgb(255,99,71)\'}, {offset: 1,color: \'rgb(32,178,170)\'}])
128             \"\"\"
129             )
130         )
131     )
132     .set_global_opts(
133         title_opts=opts.TitleOpts(
134             title=\'单价最高的商品详细柱状图\'),
135             xaxis_opts=opts.AxisOpts(name=\'玩具名称\',
136             type_=\'category\',                                           
137             axislabel_opts=opts.LabelOpts(rotate=90),
138         ),
139         yaxis_opts=opts.AxisOpts(
140             name=\'单价/元\',
141             min_=0,
142             max_=39980.0,
143             splitline_opts=opts.SplitLineOpts(is_show=True,linestyle_opts=opts.LineStyleOpts(type_=\'dash\'))
144         ),
145         tooltip_opts=opts.TooltipOpts(trigger=\'axis\',axis_pointer_type=\'cross\')
146     )
147 
148     .set_series_opts(
149         markline_opts=opts.MarkLineOpts(
150             data=[
151                 opts.MarkLineItem(type_=\'average\',name=\'均值\'),
152                 opts.MarkLineItem(type_=\'max\',name=\'最大值\'),
153                 opts.MarkLineItem(type_=\'min\',name=\'最小值\'),
154             ]
155         )
156     )
157 )
158 bar.render_notebook()
159 
160 def get_cut_words(content_series):
161     stop_words=[]
162     with open(\"D:\\Python\\sets.csv\",\'r\',encoding=\'utf-8\')as f:
163         lines=f.readlines()
164         for line in lines:
165             stop_words.append(line.strip())
166     # 添加关键词
167     my_words=[\'乐高\',\'悟空\',\'大颗粒\',\'小颗粒\']
168     for i in my_words:
169         jieba.add_word(i)
170     # 自定义停用词
171     # my_stop_words=[]
172     # stop_words.extend(my_stop_words)
173 
174     # 分词
175     word_num=jieba.lcut(content_series.str.cat(sep=\'\'),cut_all=False)
176     # 条件筛选
177     word_num_selected=[i for i in word_num if i not in stop_words and len(i)>=2]
178     return  word_num_selected
179 text=get_cut_words(content_series=df_tb[\'goods_name\'])
180 text[:10]
181 
182 import stylecloud
183 from IPython.display import Image
184 # 绘制词云图
185 stylecloud.gen_stylecloud(
186     text=\' \'.join(text),
187     collocations=False,
188     font_path=r\'F:Python数据分析课程python数据处理Pandas练习数据分析项目练习legao3225simhei.ttf\',
189     icon_name=\'fas fa-plane\',
190     background_color=\'pink\',
191     size=768,
192     output_name=\'词云图.png\'
193 )
194 Image(filename=\'词云图.png\')
195 
196 data_pair=[list(z) for z in zip(cut_purchase.index.tolist(),cut_purchase.values.tolist())]
197 
198 # 绘制饼图
199 piel=Pie()
200 piel.add(\'\',data_pair,radius=[\'35%\',\'60%\'])
201 piel.set_global_opts(title_opts=opts.TitleOpts(title=\'不同价格区间的销售额整体表现\'),
202                     legend_opts=opts.LegendOpts(orient=\'vertical\',pos_top=\'15%\',pos_left=\'2%\'))
203 piel.set_series_opts(label_opts=opts.LabelOpts(formatter=\"{b}:{d}%\"))
204 piel.set_colors([\'#EF9050\',\'#3B7BA9\',\'#6FB27C\',\'#FFAF34\',\'#D7BFD7\',\'#00BFFE\',\'#7FFFAA\'])
205 piel.render_notebook()
206 
207 df[\'price_cut\']=price_cut
208 
209 cut_purchase=df.groupby(\'price_cut\')[\'sales_volume\'].sum()
210 cut_purchase
211 
212 bar3=Bar()
213 bar3.add_xaxis([\'0~50元\',\'50~100\',\'100~200元\',\'200~300元\',\'300~500元\',\'500~1000元\',\'1000元以上\'])
214 bar3.add_yaxis(\'\',[895,486,701,288,370,411,260])
215 bar3.set_global_opts(title_opts=opts.TitleOpts(title=\'不同价格区间的商品数量\'),
216                     visualmap_opts=opts.VisualMapOpts(max_=900))
217 bar3.render_notebook()
218 
219 #国内各省份乐高销量
220 province_num=df_tb.groupby(\'province\')[\'purchase_num\'].sum().sort_values(ascending=False)
221 
222 province_num[:10]
223 
224 map1=Map()
225 map1.add(\"\",[list(z) for z in zip(province_num.index.tolist(),province_num.values.tolist())],
226         maptype=\'china\')
227 map1.set_global_opts(
228     title_opts=opts.TitleOpts(title=\'国内各产地乐高销量分布图\'),
229     visualmap_opts=opts.VisualMapOpts(max_=172277)
230 )
231 map1.render_notebook()
232 
233 province_top10=df_tb.province.value_counts()[:10]
234 province_top10
235 # image-20201013210440405
236 
237 bar2=Bar()
238 bar2.add_xaxis(province_top10.index.tolist())
239 bar2.add_yaxis(\'\',province_top10.values.tolist())
240 bar2.set_global_opts(
241         title_opts=opts.VisualMapOpts(max_=1000)
242                     )
243 bar2.render_notebook()
244 
245 # 对商品店铺名称进行分组,并对购买数量进行求和,降序排序,取前10条数据
246 shop_top10=df_tb.groupby(\'shop_name\')[\'purchase_num\'].sum().sort_values(ascending=False).head(10)
247 shop_top10
248 
249  条形图
250 # bar1=Bar(init_opts=opts.InitOpts(width=\'1350px\',height=\'750px\'))
251 bar1=Bar()
252 bar1.add_xaxis(shop_top10.index.tolist())
253 bar1.add_yaxis(\'\',shop_top10.values.tolist())
254 bar1.set_global_opts(title_opts=opts.TitleOpts(title=\'乐高销量排名Top10淘宝店铺\'),
255                      xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-15)),
256                      visualmap_opts=opts.VisualMapOpts(max_=28669)
257                     )
258 bar1.render_notebook()
259 
260 #店铺销量前十可视化
261 #提取数据
262 shop_top10 = data.groupby(\'店铺名称\',as_index=False).sum().sort_values(by=\'销量\', ascending=False).head(10).reset_index(drop=True)
263 #绘图
264 plt.figure(figsize=(15,8))
265 pic = sns.barplot(x=\'店铺名称\', y=\'销量\', data=shop_top10,palette=\"summer_r\")
266 for a,b in zip(shop_top10.index, shop_top10[\'销量\']):
267     pic.text(a,b,b,ha=\'center\', va=\'bottom\')
268 plt.xticks(rotation=45)
269 plt.title(\"店铺销量前十\",fontsize=18, pad=20)
270 
271 # 排名前十的省份可视化
272 province_top10 = pd.DataFrame((data.省份.value_counts()[:10])).reset_index().rename(columns={\"index\":\"地区\",\"省份\":\"数量\"})
273 plt.figure(figsize=(15,8))
274 pic = sns.barplot(x=\'地区\', y=\'数量\', data=province_top10,palette=\"spring_r\")
275 for a,b in zip(province_top10.index, province_top10[\'数量\']):
276     pic.text(a,b,b,ha=\'center\', va=\'bottom\')
277 plt.xticks(rotation=45)
278 plt.title(\"地区数量前十\",fontsize=18, pad=20)
279 
280 # 价格分布可视化
281 cut_bings = [0,50,100,200,300,500,1000,8888]
282 cut_labels = [\'0~50元\', \"50~100元\", \"100~200元\", \"200~300元\", \"300~500元\", \"500~1000元\", \"1000~8888元\"]
283 data[\'价格区间\'] = pd.cut(data[\'商品单价\'],bins=cut_bings, labels=cut_labels)
284 
285 price = pd.DataFrame((data.价格区间.value_counts()[:10])).reset_index().rename(columns={\"index\":\"价格区间\",\"价格区间\":\"数量\"})
286 
287 plt.figure(figsize=(15,8))
288 pic = sns.barplot(x=\'价格区间\', y=\'数量\', data=price,palette=\"spring_r\")
289 plt.xticks(rotation=45)
290 plt.title(\"地区数量前十\",fontsize=18, pad=20)
291 
292 model = models.Sequential()
293 #图像通过多个不同的卷积核的滤波,并加偏置 ( bias ),
294 #提取出局部特征,每一个卷积核会映射出一个新的 2D 图像。
295 model.add(layers.Conv2D(32, (3, 3), 
296                 activation=\'relu\', 
297                 input_shape=(28, 28, 1)))#卷积层1
298 
299 #对激活函数的结果再进行池化操作 ( 即降采样),目前一般是使用最大池化,
300 #保留最显著的特征,并提升模型的畸变容忍能力。
301 model.add(layers.MaxPooling2D((2, 2)))#最大值池化层1
302 
303 #将前面卷积核的滤波输出结果进行非线性的激活函数处理
304 model.add(layers.Conv2D(64, (3, 3), activation=\'relu\'))#卷积层2
305 
306 model.add(layers.MaxPooling2D((2, 2)))#最大值池化层2
307 
308 model.add(layers.Conv2D(64, (3, 3), activation=\'relu\'))  #卷积层3
309 
310 model.add(layers.MaxPooling2D((2, 2)))#最大值池化层3
311 
312 model.add(layers.Flatten()) #降维
313 
314 model.add(layers.Dense(64, activation=\'relu\'))   #全连接层1
315 
316 model.add(layers.Dense(500, activation=\'relu\'))   #全连接层2
317 
318 model.add(layers.Dense(10, activation=\'softmax\'))#全连接层3,作为输出层
319 
320 from keras.datasets import mnist
321 from tensorflow.keras.utils import to_categorical
322 (train_images, train_labels), (test_images, test_labels) = mnist.load_data()
323 
324 #数据类型转换float32
325 train_images = train_images.reshape((60000, 28, 28, 1))
326 train_images = train_images.astype(\'float32\') / 255
327 test_images = test_images.reshape((10000, 28, 28, 1))
328 test_images = test_images.astype(\'float32\') / 255
329 
330 #转换为one_hot类型
331 train_labels = to_categorical(train_labels)
332 test_labels = to_categorical(test_labels)
333 
334 #编译模型
335 model.compile(optimizer=\'rmsprop\',
336               loss=\'categorical_crossentropy\', 
337               metrics=[\'accuracy\'])
338 
339 #训练模型
340 model.fit(train_images, train_labels, 
341           epochs=10, batch_size=128)
342 
343 #评估模型,对测试集进行评估
344 test_loss, test_acc = model.evaluate(test_images, test_labels)
345 print(test_acc)

 

四、对本课程设计的整体完成情况做一个总结

(1)通过对数据分析和挖掘  像这样世界级的玩具大厂曾经在2003年濒临破产的边缘,当时LEGO交易额骤减了30%。而这样的危机来自于玩具游戏市场的竞争。在其他电玩游戏业者接连崛起后,乐高单凭制造传统玩具、实在难敌其他不断改变的游戏产业。2004年,LEGO业绩又再掉了10%。这样接连的惨状连现任执行长Jorgen Vig Knudstorp都表示:「我们正处于入不敷出的危急时刻,面临债务违约危机,可能终将导致公司破产。为了要了解孩童的玩乐方式,LEGO开设了「Future Lab(未来研究室)」,透过科学研究人员的分析,了解消费者真正的喜好。在研究当中,也开启了许多不同的想法。例如,研究人员发现美国以及欧洲国家的家长就有很大的差异。美国的家长不喜欢在孩童玩乐的时候介入、教导他们,美国的家长们希望孩子可以独立探索。反之,欧洲的家长们却喜欢跟孩子们一起坐在地板上玩。对此,乐高也会对不同地区的客户做出本土化的设计。近年大数据蔚为风气,但LEGO将研究的重心更放在真实环境中的「小数据」。透过「以人为本」的仔细观察,拜访一个个真实的客户,对小样本做出直觉的观察。例如,他们曾经去拜访一位德国11岁的小男孩。LEGO的研究员问小男孩他家中最让他自豪的是什么东西。然后,小男孩想了一下并指向一双已经穿坏的溜冰鞋。小男孩说:这是我最骄傲的东西,因为他可以证明我是这镇上最棒的溜冰者。这点,也让团队意识到,虽然孩子能拥有的东西很多,但他们还是愿意把时间花在自己感兴趣、能够做主的事情上。根据这样小样本,团队开始设计更小的乐高积木,让孩子更能掌握自主组合的权力。虽然LEGO减少了一些不成功的事业,但他们也积极转型成数字化、开发新领域。例如在2014年推出了《The LEGO Movie(乐高玩电影)》,在全球创下超过5亿美元的票房,同时也成功提升品牌的形象。来年,乐高也与电影《侏罗纪世界》合作,推出了同主题的玩具以及游戏,藉由这个卖座大片同时提升品牌知名度。同样的成功模式也复制到《星际大战7》,同样造成良好的效益。利用跨界联盟,乐高已经不单单是游戏制造商,更会以内容营销、成为「讲述积木故事的媒体公司」,让产品讲述出更多意涵。

曾经,所有大数据都指出:未来的世代不会对乐高有兴趣了,毕竟,智能型、电子化的游戏将越来越多。然而,乐高不但度过1980年代掌上型游戏、计算机版游戏兴起时的难关,至今,面临智能型产品的崛起,他们一样靠着持续改变而不断突破。LEGO持续跨界签署授权协议,拍摄出成功的系列电影、也制作出电视及网络的原创作品。在玩具本身,乐高也结合科技,替单纯的积木创造出不同的价值。例如,乐高也推出能够与智能型手机互动的积木,在最新一代的Mindstorms这系列乐高机器人积木中,使用者可以通过手机连接Wi-Fi或是打开蓝牙来手动控制机器人。
因为与时俱进的改变,LEGO在近几年的营收逐年增加、员工数量变得庞大、生产线也拓展到其他国家。
1.从谷歌趋势平台发现,“LEGO”的搜索量在近一年居高不下,每日搜索量一直稳定保持在50次数左右。同时,搜索来源地区呈现范围广的特点,涵盖亚太地区、北美地区、欧洲地区等。其中搜索量最高的是丹麦和波兰。

 

 

 2.在亚马逊购物平台中,与“LEGO”关联的关键词多达274个,而其累计搜索量高达2.7百万次数,从这个庞大的数据能够推测出乐高的热度高涨,销量惊人。

 

 

 3.TIKTOK超店有数发现,关于“lego”的数据容量庞大,包括商品、带货达人、视频和广告视频。其中最能体现热度代的标签也证明了他很受欢迎,其播放量达到9866亿次数,点赞量有413亿次数。

 

 

 

 

(2)自己在完成此设计过程中,得到哪些收获?以及要改进的建议

  数据分析常用模块有三个:numpy:矩阵计算等数学计算,pandas:基于numpy的数据分析工具,使用数据框对表结构的数据进行分析,matplotlib:数据可视化,本次课程主要学习前两者。

  numpy一维数组与列表的区别:一维数组提供了很多统计功能,一维数组可以向量化运算,一维数组全是相同的数据类型。

  pandas的Series有index,我们可以在使用的时候指定这些index。iloc根据位置获取元素的值,loc方法根据index索引值获取元素的值。

  前面学了很多Python的基础知识,到了这一关可以简单打一些代码了,但是使用上还很不熟练,做不到如臂使指。这就要求我们结合这一关的学习努力去夯实基础,将自己的基础打牢,尤其是列表和字典的使用,更是重中之重,实际上,列表和numpy中的Array很像,字典和pandas中的Series很像,但是前后者的使用是有很大区别的,例如列表中可以使用 .append这个方法,但是array就不可以使用这些列表中的方法,这个一定要注意,列表和array很像,很容易就会出现这种混用的错误。

  做了好几天,非常辛苦,但是这种苦功的值得的,不去疯狂练习,永远也不知道列表等用法在实际操作中是怎么使用的,大学的时候我学C语言也是做了100道语法题才能做到融汇贯通的,Python只有努力练习,才能掌握它的使用方法。这种苦功,一百个小时过后,换来的就是Python的熟练掌握!

 


来源:https://www.cnblogs.com/rosy-bubble/p/16989749.html
本站部分图文来源于网络,如有侵权请联系删除。

未经允许不得转载:百木园 » 乐高玩具数据分析

相关推荐

  • 暂无文章