【导语】:今天我们来聊一聊刚过去的520,大家买得最多的都是什么?Python技术部分请看第二部分。

Show me data,用数据说话!今天我们聊一聊 520的礼物,一年一度的520刚刚过去,由于受疫情影响错过了今年的2月14日情人节,2020年5月20日,这个谐音为“爱你爱你我爱你”的 “世纪520”,对情侣们来说显得格外有吸引力。

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

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

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

01、“世纪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淘宝活动给自己买买买的。

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

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

数据获取

数据预处理

数据可视化

部分关键代码如下:

01 数据获取

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

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

02 数据预处理

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

删除重复值

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()

03 数据可视化

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

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礼物数据的全部内容啦,如果你感兴趣的话,也可以自己下载了数据和代码试试哦~

CDA数据分析师 出品

作者:Mika

数据:真达

后期:泽龙

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

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

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 一年一度的520刚刚过去. 由于受疫情影响错过了今年的2月14日情人节,2 ...

  2. Python告诉你:股神巴菲特有坑我们吗?

    引言: 邢不行的系列帖子"量化小讲堂",通过实际案例教初学者使用python进行量化投资,了解行业研究方向,希望能对大家有帮助. [历史文章汇总]请点击此处 [必读文章]EOS期现 ...

  3. python框架django书籍_有Python基础,刚接触web框架的Django初学者。

    本文面向:有Python基础,刚接触web框架的Django初学者. 环境:windows7 python3.5.1 pycharm Django 1.10版 pip3 一.Django简介 百度百科 ...

  4. Python告诉你:为何年终奖多发一元,到手却少两千多?

    作者 | shenzhongqiang 来源 | Python数据与分析(ID:ML_Python) 年终奖多发一元,到手却要少两千多,甚至更多.听到这个消息的时候,大家是不是觉得有点意外,意外之余还 ...

  5. 啥是佩奇?Python告诉你

    作者 | 丁彦君 来源 | 恋习Python 昨天, 被<啥是佩奇>这支广告片刷屏了. 佩奇明明是个喜剧角色, 却看哭了所有人. ▼ <啥是佩奇>??? 快过年了 在农村爷爷给 ...

  6. 11月30日云栖精选夜读 | 用Python告诉你,现在的房租有多高?

    杭州房租:钱塘两岸最高,奥体单间达4830元/月.不少人感叹:躲过了高房价,躲不过高房租,面对房租上涨,感觉身体被掏空.2018年的这个夏天,房租正在成为摧垮年轻人的"第一根稻草" ...

  7. python哪本好-在众多小说中,Python告诉你哪本小说好看

    Python Python开发 Python语言 在众多小说中,Python告诉你哪本小说好看 前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及 ...

  8. python花钱培训值吗-Python培训班学生刚学到70%就拿到月薪万元的Offer

    原标题:Python培训班学生刚学到70%就拿到月薪万元的Offer 刘宇是马哥Python开发实战班的学生,作为开办以来最为优秀的十几名学生之一,现在在一间创业公司担任高级开发.很少有人知道,再进入 ...

  9. python125免费教程,125 个视频成就千万级网红,Python 告诉你李子柒都在拍些什么?...

    原标题:125 个视频成就千万级网红,Python 告诉你李子柒都在拍些什么? 作者 |Mika,数据 |真达 后期 |Mika.泽龙 责编 | 郭芮 来源 | CDA数据分析师 今天我们来聊聊把生活 ...

最新文章

  1. 哪些人交不到真朋友?
  2. 【Forge】Minecraft 1.7.10 Mod开发研究 - 黑猫背包MOD 【06-给你唱一首岁月的歌】
  3. .NET 云原生架构师训练营(模块二 基础巩固 依赖注入)--学习笔记
  4. Zing加快了JVM应用程序的预热
  5. android的交互方式,Android与js的交互方式
  6. 知道经纬度坐标怎么计算两点间距离_【我的时间拣屎】亚里士多德:地球是圆的,我计算了地球的圆周...
  7. Android系统(192)--- 如何替换系统的默认静态壁纸?
  8. 在微信中调用ajax出现的问题
  9. DQL 学习3 -- Administration Methods
  10. 二分法04:猜数字大小
  11. oracle查看脚本,oracle 查看表空间的脚本
  12. [Everyday Mathematics]20150112
  13. 《HALCON机器视觉与算法原理编程实践》第1章 机器视觉概述-学习笔记
  14. 华为S6720系列万兆交换机光模块解决方案
  15. python函数库 阶跃 信号函数 调用_使用numpy增加阶跃函数中的分辨率
  16. Python selenium 实现大麦网自动购票过程
  17. 文件的三种加载方式(全网讲解最全,最严谨)
  18. 5GC 网元AMF、SMF、UPF、PCF、UDM等介绍
  19. 键盘 - 键盘样式风格有关设置
  20. poj 2187(旋转卡壳)

热门文章

  1. 第二篇 基础篇—燃烧吧!我的雌雄双股剑! 第5回 二弟呀,面子工程很重要
  2. 「建模学习」3dmax人物模型制作全过程分享,案例实操,建模学习教程
  3. Apache Doris 单节点(可多节点)Docker集群制作教程
  4. 计算机程序设计员教程,国家职业资格培训教程计算机程序设计员(基础知识).ppt...
  5. 华容道(4x4)教学(最难(最后两行))
  6. 通知 | 2022年度“RONG”奖学金入围答辩名单公布
  7. 分布式存储之 Glusterfs
  8. 微信内置浏览器window.opener不能使用
  9. Magento 屏蔽国内IP,允许国内特定地区的IP访问
  10. Web Scalability for Startup Engineers TipTechniques for Scaling You Web Application --读书笔记