前言

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。

一年一度的520刚刚过去。

由于受疫情影响错过了今年的2月14日情人节,2020年5月20日,这个谐音为“爱你爱你我爱你”的 “世纪520”,对情侣们来说显得格外有吸引力。

网上都是婚礼、告白、结婚等甜蜜新闻,微博排行榜上的蜜都要溢出屏幕了,520简直就是大型“撒狗粮”节日。

其中,最大的狗粮来自民政局!全国各地的民政局都爆满了!

想在这天领证的新人们把民政局围得水泄不通,有人甚至凌晨4点就前往排队。

一、“世纪520”送礼物 ,大家都在买什么?

除了领证的,对于情侣们来说,关于520要怎么度过,改送什么礼物给心爱的ta也是关注度非常高的话题。

首先,看到知乎上关于“520送什么的话题”,我们经过分析整理发现:

知乎数据

给女朋友送什么

关于给女朋友的礼物,广大网友都提到了口红、香水、项链、手表、还有玫瑰巧克力等礼物;

给男朋友送什么

送男朋友方面,剃须刀、键盘、鼠标、游戏机等也频频被提到。

淘宝数据

那么事实究竟是怎样的呢?接下来让我们看到淘宝天猫的数据,真正做到用数据来说话。

我们搜集整理了淘宝网关于520礼物的100页商品数据,使用Python进行整理分析,经过预处理之后,一共得到3854条数据。

520大家都在买什么礼物?

我们在淘宝搜索520礼物,对得到的数据进行分析整理,从中发现:

永生花、玫瑰花占了很大的比重,可以看到节日送花还是广大男性的统一选择;
除此之外可以发现,施华洛世奇、潘多拉等首饰也是不错的选择;
同时还有音乐盒、巧克力等礼物。

520礼物哪些店铺销量最好?

那么作为520的礼物,哪些店铺销量最好呢?

分析发现,彩妆品牌果然是妥妥的王者。

Mac名列第一,果然是小姐姐们人手一支的口红,没毛病。其次阿玛尼、ysl、Tomford、纪梵希全都榜上有名。有意思的是第二名的店铺是一家主营创意礼物的店kufire,当中从创意灯、按摩枕等礼物还不少。这也可能跟这家店搜索时页面比较靠前有关吧。

520哪些省份的人最喜欢买买买

那么520期间哪些省份的人最喜欢买买买呢?数据整理发现,广东人民拔得头筹,其次浙江、上海位列二三。

520商品价格都是多少钱

那么520期间商品的价格都是怎么分布的呢?从图中可以看到50元以下的并不多,50-200元内的商品最多。

什么价位的商品销量最好

看完了520商品的价格区间,再看看什么价位的商品销量最好。分析可以发现,200元以内的商品最受人青睐。其中0-50元销量占比达到19.21%,50-100占比20.13%。100-150和150-200的占比也不错,分别为15.88%到17.12%。

最后再看到520大家最喜欢买什么。我们分析整理了520商品的标题,得出词云发现,主要可以分为这几类;

送女生

  • 永生花、玫瑰花是广大男同胞的首要选择;
  • 彩妆、化妆品占了很大的比重,比如阿玛尼粉底液、纪梵希等等
  • 首饰、项链也是很多人的选择;

送男生

打火机、手表、电动牙刷是许多人会选择购买的商品。

看来送什么礼物这方面跟知乎得出的结论类似,从中我们也发现到在520情人节,主要男生给女生买礼物占比较大,当然也不排除许多小姐姐们趁着520淘宝活动给自己买买买的。

二、Python教你分析,淘宝520商品数据

我们搜集整理了淘宝网关于520礼物的100页商品数据,使用Python进行整理分析。整个数据分析的过程分为以下三步:

  • 数据获取
  • 数据预处理
  • 数据可视化

部分关键代码如下:

1. 数据获取

此部分代码之前文章已经放过,此处暂不做赘述,爬取出来的数据以数据框的形式存储,结果如下图所示。

df.head()


查看一下数据框的大小,可以看到一共有4404个样本。

df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 4404 entries, 0 to 4403
Data columns (total 5 columns):
goods_name      4404 non-null object
shop_name       4404 non-null object
price           4404 non-null float64
purchase_num    4404 non-null object
location        4404 non-null object
dtypes: float64(1), object(4)
memory usage: 172.1+ KB

2. 数据预处理
此处我们对数据进行以下的处理以方便后续的数据分析和可视化工作:

  • 删除重复值
  • purchase_num字段:删除购买人数为空的记录
  • purchase_num字段:提取数值型数据
  • 计算销售额 = price*purchase_num
  • location字段:提取省份数据
  • goods_name字段:分词,提取关键词
# 导入所需包
import numpy as np
import pandas as pd
import time
import re
import jieba
import jieba.analyse
from collections import Counter
from pyecharts.charts import Bar, Map, Pie, TreeMap, WordCloud, Page
from pyecharts import options as opts
from pyecharts.globals import SymbolType# 读入数据
df = pd.read_excel('../data/520礼物天猫数据.xlsx') # 去除重复值
df.drop_duplicates(inplace=True)# 删除购买人数为空的记录
df = df[df['purchase_num'].str.contains('人付款')]# 购买人数
df['purchase_num'] = df['purchase_num'].str.extract('(\d+)').astype('float')
# 销售额
df['sales_volume'] = df['price'] * df['purchase_num']# 省份处理
df['province_name'] = df.location.str[:2]

经过预处理之后,数据一共有3854条,如下所示:

df.head()

3. 数据可视化
数据可视化部分我们主要对以下几个方面信息进行分析:

520大家都买什么礼物Top10

data = [{"value": 593, "name": "永生花"},{"value": 340, "name": "玫瑰花"},{"value": 221, "name": "施华洛"},{"value": 114, "name": "巧克力"},{"value": 66, "name": "银项链"},{"value": 65, "name": "四叶草"},{"value": 65, "name": "音乐盒"},{"value": 65, "name": "潘多拉"},{"value": 59, "name": "满天星"},{"value": 49, "name": "康乃馨"}
] # 树形图
tree = TreeMap(init_opts=opts.InitOpts(width="1280px", height="720px"))
tree.add(series_name='', data=data, label_opts=opts.LabelOpts(position='inside'))
tree.set_global_opts(title_opts=opts.TitleOpts(title='520大家都买什么礼物top10'), legend_opts=opts.LegendOpts(is_show=False))
tree.render()

520礼物商品销量Top10店铺

代码实现:

# 计算top10店铺
shop_top10 = df.groupby('shop_name')['purchase_num'].sum().sort_values(ascending=False).head(10)# 绘制柱形图
bar1 = Bar(init_opts=opts.InitOpts(width='1350px', height='750px'))
bar1.add_xaxis(shop_top10.index.tolist())
bar1.add_yaxis('', shop_top10.values.tolist())
bar1.set_global_opts(title_opts=opts.TitleOpts(title='520礼物商品销量Top10店铺'),xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-15)),visualmap_opts=opts.VisualMapOpts(max_=shop_top10.values.max()))
bar1.render()

520礼物商品销量省份排名Top10

代码实现:

# 计算销量top10
province_top10 = df.groupby('province_name')['purchase_num'].sum().sort_values(ascending=False).head(10)# 条形图
bar2 = Bar(init_opts=opts.InitOpts(width='1350px', height='750px'))
bar2.add_xaxis(province_top10.index.tolist())
bar2.add_yaxis('', province_top10.values.tolist())
bar2.set_global_opts(title_opts=opts.TitleOpts(title='520礼物商品销量省份排名Top10'),visualmap_opts=opts.VisualMapOpts(max_=province_top10.values.max()))
bar2.render()

520礼物国内各省份销量分布

代码实现:

# 计算销量
province_num = df.groupby('province_name')['purchase_num'].sum().sort_values(ascending=False) # 绘制地图
map1 = Map(init_opts=opts.InitOpts(width='1350px', height='750px'))
map1.add("", [list(z) for z in zip(province_num.index.tolist(), province_num.values.tolist())],maptype='china')
map1.set_global_opts(title_opts=opts.TitleOpts(title='520礼物国内各省份销量分布'),visualmap_opts=opts.VisualMapOpts(max_=province_num.quantile(0.9)),)
map1.render()

520不同价格区间的商品数量


代码实现:

def tranform_price(x):if x <= 50:return '0~50'elif x <= 100:return '50~100'elif x <= 150:return '100~150'elif x <= 200:return '150~200'elif x <= 250:return '200~250'elif x <= 300:return '250~300'elif x <= 500:return '300~500'elif x <= 1000:return '500~1000'elif x <= 2000:return '1000~2000'elif x <= 5000:return '2000~5000'else:return '5000~10000'# 数据转换
df['price_cut'] = df.price.apply(lambda x: tranform_price(x))
price_num = df.price_cut.value_counts()# 数据
x_data = ['0~50', '50~100', '100~150', '150~200', '200~250', '250~300', '300~500', '500~1000', '1000~2000', '2000~5000', '5000~10000']
y_data = [395, 594, 565, 620, 212, 302, 399, 394, 273, 91, 9]bar3 = Bar(init_opts=opts.InitOpts(width='1350px', height='750px'))
bar3.add_xaxis(x_data)
bar3.add_yaxis('', y_data)
bar3.set_global_opts(title_opts=opts.TitleOpts(title='520不同价格区间的商品数量'),visualmap_opts=opts.VisualMapOpts(max_=800))
bar3.render()

520礼物不同价格区间销量占比


代码实现:

price_cut_num = df.groupby('price_cut')['purchase_num'].sum()
data_pair = [list(z) for z in zip(price_cut_num.index, price_cut_num.values)]# 饼图
pie1 = Pie(init_opts=opts.InitOpts(width='1350px', height='750px'))
# 内置富文本
pie1.add(series_name="", radius=["35%", "55%"],data_pair=data_pair,label_opts=opts.LabelOpts(formatter="{b}: {c} ({d}%)"))
pie1.set_global_opts(legend_opts=opts.LegendOpts(pos_left="left", pos_top='30%', orient="vertical"), title_opts=opts.TitleOpts(title='520礼物不同价格区间销量占比'))
pie1.render()

以上就是Python分析520礼物数据的全部内容啦,如果你感兴趣的话,也可以自己下载了数据和代码试试哦~

刚过去的520,大家都在送什么礼物,Python用可视化图告诉你相关推荐

  1. 口红?剃须刀?Python告诉你,刚过去的520,大家都在送什么礼物

    [导语]:今天我们来聊一聊刚过去的520,大家买得最多的都是什么?Python技术部分请看第二部分. Show me data,用数据说话!今天我们聊一聊 520的礼物,一年一度的520刚刚过去,由于 ...

  2. 母亲节来了送啥礼物好?全网数据告诉你!

    "慈母手中线,游子身上衣." 深挚的母爱,无时无刻不在沐浴着儿女们.5月的第2个周日就是母亲节了,这是一个全世界感谢母亲的节日.这个节日最早出现在古希腊,而现代的母亲节起源于美国, ...

  3. 满大街都在叫我学Python,真有必要学吗?

    前言 前一段时间在网上看到非常多的推广,无一例外都是分享自己学python的经历,告诉你自己学了之后,无一例外都是说找工作好找,需求多,2个小时的工作5分钟就做完了,找资料要30分钟,学会之后只要3分 ...

  4. 520送什么礼物给女朋友最好,各商家值得收藏的海报都在这里

    一年一度的520是什么节日,别问,问就是男孩子百度送什么礼物给女朋友最好,女孩子冥思苦想送男朋友什么礼物比较好的商家大促情人节! 网络用语520就是我爱你的意思,因此520也被成为网络情人节,这一天许 ...

  5. 520情人节送什么礼物合适、送给女生礼物推荐

    即将迎来咱们一年一度的520网络情人节了,虽然是比较特殊的一个"情人节",但是必要的仪式感还是不可以缺少哦.那就是咱们的互相为对方准备礼物的环节,众所周知,礼物是两个人在拉近关系距 ...

  6. 2022年520送什么礼物?Ipad第三方电容笔了解下

    2022年520就在下周了,还不知道送什么礼物的男生女生看过来,如果对方有ipad的话可以考虑送心仪的她/他一款Ipad第三方电容笔,绝对实用呀!送礼很多时候就是要考虑其实用性,让对方在每天都能在使用 ...

  7. 田志刚:所有大公司都是小公司(二)

    5,000=5,000,5000>50,000 企业的老总都会说我们公司以人为本,但员工都不知道有哪些人,这些人做过什么,擅长什么,何来以人为本?人们都说知识共享是知识管理中最重要的问题,也是最 ...

  8. 大学计算机要学多久,大学刚开学要不要带电脑?很多人都很后悔,学长学姐把经验告诉你...

    大学刚开学要不要带电脑?很多人都很后悔,学长学姐把经验告诉你 文/小川说车况 大学刚开学,学生们要不要带电脑呢,想必这个问题一直对还没进入大学的准大学生来说很困扰,一方面既担心在学校里面用电脑的时候不 ...

  9. 赶在520之前,程序员如何用Python送上最特别的“我爱你”表白

    摘要: 每到情人节.七夕节,不少小伙伴大伙伴们都会遇到这样一个世纪问题--怎么给女朋友/老婆一个与众不同的节日惊喜.今天给大家分享一个独特的表白方法--用"我爱你"拼出心爱人的模样 ...

最新文章

  1. linux vim6,VIM6:linux终端下的英文字典--SDCV
  2. 数据结构(严蔚敏)之一——顺序表之c语言实现
  3. MyBatis的总结(下)
  4. ZooKeeper(3.4.5) - 配置伪集群模式
  5. JAVA----简单的自旋锁
  6. linux发行版本中 图形方式的运行级,在大多数 Linux 发行版本中,图形方式的运行级定义为?...
  7. android+模拟示波器,模拟示波器
  8. Linux下如何进入Redis客户端
  9. Kindle:电子书资源
  10. dp 母函数 入门 + 模板
  11. python最好用的助手_让Python爬虫变成你的好助手
  12. 除了秃顶,你和程序员大佬还有啥区别?
  13. 小猫咪研学之K8S基本介绍
  14. 小白都能懂的 玩转docker系列之 Mysql同步数据
  15. 从技法到兵法:今天为何必须关注物理世界的企业智能?
  16. Effective C++ 规则40:明智而审慎地使用多重继承
  17. lambda正序 倒序 根据自定义大写一二三数组排序
  18. 冰河远程控制软件使用
  19. 基于Attention的机器翻译模型,论文笔记
  20. 精细化学品化学习题解答

热门文章

  1. 神(gai)奇(si)的MIUI优化
  2. iOS iPhone6分辨率与适配
  3. 如何构建基于 Web Excel 组件的指标补录平台
  4. Ulink2升级至V2.03
  5. BZOJ-2743 [HEOI2012]采花 【树状数组+离线处理】
  6. 在线JSONPath解析器
  7. Java Springboot之数据库监控与预警
  8. html滚动字幕如何调色,如何通过制作滚动字幕的软件实现这种片尾的向上滚动字幕效果...
  9. 【光伏】基于战争策略算法WSO优化光伏模型附matlab代码
  10. VS2012 BIDS之Reporting Service/SSRS 项目