《奇巧淫技》系列-Python分析维密bra(文胸)销售记录,这个罩杯最多女生。。。。

此博客仅为我业余记录文章所用,发布到此,仅供网友阅读参考,如有侵权,请通知我,我会删掉。
本着娱乐的态度,着手分析一下维多利亚的秘密文胸的评价情况,看看结论如何。

项目背景

无他,想得知一下咱们国家女性的平均罩杯罢!
文章仅供娱乐学习,如无意伤害了部分女生的自尊,那就在这里Say sorry了。

1.数据获取

数据是从某宝下载下来的,通过爬虫手段。爬取的过程比较简单,这里不做论述。

本文章数据是从维多利亚的秘密旗舰店的商品评价中获取。

既然你知道了url,知道了如何登录某宝,那还不知道如何爬取商品评论内容吗?
(某东的商品评论数据获取更简单,建议使用某东)
在这里插入图片描述
来看一下获取下来的评论+罩杯内容!这里保存为excel表格文档。数据量比较少,不怎么能够说明问题,仅供娱乐。
共获取了5800+份评论,接下来看看统计出来的平均罩杯是怎么个样子的!
在这里插入图片描述

2.问题分析

主要使用pandaspyecharts 实现图表的制作。这里直接上图 + 代码

评论词云
在这里插入图片描述
看图写作:

  1. 词云图,一眼看过去就让人觉得消费者很满意。
  2. 难道这个维密的品控如此之好??竟清一色的好评!!
  3. 左图用的自定义形状,右图用pyecharts实现(不支持自定义形状,但是有多个形状可以选择)

罩杯对照图
知道你们个个有色心没色胆,不了解这个具体的罩杯是多大吧!但是没有关系,贴心的我!!已经为你们找来对照表。
在这里插入图片描述
在这里插入图片描述
颜色分布柱状图
在这里插入图片描述
看图写作:

  1. 黑色占比最高,难道是黑色不易脏?
  2. 这图没看头,建议略过。

罩杯分布柱状图
在这里插入图片描述
看图写作:

  1. 34B、32B、36B这几个吨位的数量最多。能感觉到眼福很不错的亚子了。
  2. 难道超过一半女性的CupB-cup?(但是平时看到的多数都很平吖。。)
  3. 看着好像有些少了些什么,具体是什么又说不出来。
  4. 什么?这些罩杯是多大你不知道??好好对照上面的对照图吧!

罩杯区间柱状图
在这里插入图片描述
罩杯区间饼图
在这里插入图片描述
看图写作:

  1. B-cup占总比的**50%**以上,看来世界还是很美好的。
  2. A-cupD-cup都很稀少,但是为什么我遇到的都是A-cup呢??
  3. 我知道了,是少了EFG-cup,缺少了这么几个 尺寸。

结论:
(根据文中数据瞎说,不代表官方)

  • 多数女性为B-cup,emmmm…。
  • A-cupD-cup比较少,但是又小又少的遇到的概率却很大。
  • 大尺寸如EFG-cup无商品售卖,这说明什么??大尺寸的在咱们国内无市场。

3.代码实现

首先导入模块

# coding=utf-8
import os
import json
import requests
import pandas as pd
import jieba.analyse
from wordcloud import WordCloud
from pyecharts import options as opts
from pyecharts.globals import ThemeType
from pyecharts.globals import SymbolType
from pyecharts.charts import Pie, Bar, Map, WordCloud

stop_words_txt = 'xxx.txt'  # 过滤词
df = pd.read_excel('xxx.xlsx')  # 读取标准数据

京东爬虫代码

url = 'https://sclub.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98vv59&productId=100001068301&score=0&sortType=5&page={}&pageSize=10&isShadowSku=0&rid=0&fold=1'

headers = {
    'Referer': 'https://item.jd.com/100001068301.html',
    'Sec-Fetch-Mode': 'no-cors',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.87 Safari/537.36'
}

def get_comment_spider():
    for i in range(1, 100):
        # time.sleep(random.randint(1, 3))
        resp = requests.get(url.format(i), headers=headers)
        print(i, resp.text)
        resp_ = json.loads(resp.text[24:-2])
        comment_list = []
        for comment in resp_['comments']:
            data = {
                'size': comment['productSize'],'color': comment['productColor'],
                'comment': comment['content'],'date': comment['referenceTime']}
            comment_list.append(data)
        save_to_excel(comment_list)

def save_to_excel(comment_list):
    if os.path.exists('jd_comment.xlsx'):
        df = pd.read_excel('jd_comment.xlsx')
        df = df.append(comment_list)
    else:
        df = pd.DataFrame(comment_list)

    writer = pd.ExcelWriter('jd_comment.xlsx')
    df.to_excel(excel_writer=writer, sheet_name='SunriseCai', columns=['bra_size', 'color', 'comment', 'date'],
                index=False, encoding='utf-8')
    writer.save()

颜色分布柱状图

def color_() -> Bar:
    colors = list(df.color.value_counts().items())
    colors = colors[:10]	# 取前面10个颜色

    bar = (
        Bar()
            .add_xaxis(list(data[0] for data in colors))
            .add_yaxis('SunriseCai', list(data[1] for data in colors))
            .set_global_opts(title_opts=opts.TitleOpts(title='颜色分布柱状图'),
                             xaxis_opts=opts.AxisOpts(name='颜色'),
                             yaxis_opts=opts.AxisOpts(name='数量'),
                             toolbox_opts=opts.ToolboxOpts())
    )
    bar.render() # '默认在当前目录生成一个render.html,也可以自定义文件名称'

评论词云代码
下边代码为右边的pyecharts词云代码。
左边的自定义形状词云代码参考玩转wordcloud,点击跳转。

def wordcloud() -> WordCloud:
    jieba.analyse.set_stop_words(stop_words_txt)

    keyword_list = jieba.analyse.textrank(''.join(df.comment), topK=65, withWeight=True, )
    print(keyword_list)

    word_cloud = (
        WordCloud()
            # '传入列表,word_size_range为字体大小,shape为词云的形状'
            .add("", keyword_list, word_size_range=[15, 100], shape=SymbolType.DIAMOND)
            .set_global_opts(title_opts=opts.TitleOpts(title="Bra评论标题词云Top65"),
                             toolbox_opts=opts.ToolboxOpts())
    )
    word_cloud.render()  # '默认在当前目录生成一个render.html,也可以自定义文件名称'

罩杯分布柱状图

def Cup_() -> Bar:
    """
    统计罩杯分布
    :return:
    """
    size_list = sorted(list(df.bra_size.value_counts().items()))
    print(size_list)

    bar = (
        Bar()
            .add_xaxis(list(size[0] for size in size_list))
            .add_yaxis('SunriseCai', list(nums[1] for nums in size_list))
            .set_global_opts(title_opts=opts.TitleOpts(title='罩杯分布柱状图'),
                             xaxis_opts=opts.AxisOpts(name='罩杯'),
                             yaxis_opts=opts.AxisOpts(name='数量'),
                             toolbox_opts=opts.ToolboxOpts())
    )
    bar.render() # '默认在当前目录生成一个render.html,也可以自定义文件名称'

罩杯区间柱状图与罩杯区间饼图

def avg_Cup() -> Pie:
    size_list = sorted(list(df.bra_size.value_counts().items()))
    Cup_bin_dict = {i: 0 for i in "ABCD"}	# 生成一个罩杯字典
    for data in size_list:
        if "A" in data[0]:
            Cup_bin_dict['A'] += data[1]
        if "B" in data[0]:
            Cup_bin_dict['B'] += data[1]
        if "C" in data[0]:
            Cup_bin_dict['C'] += data[1]
        if "D" in data[0]:
            Cup_bin_dict['D'] += data[1]
    print(Cup_bin_dict)

    bar = (
        Bar()
            .add_xaxis(list(Cup_bin_dict.keys()))
            .add_yaxis('SunriseCai', list(Cup_bin_dict.values()))
            .set_global_opts(title_opts=opts.TitleOpts(title='罩杯区间柱状图'),
                             xaxis_opts=opts.AxisOpts(name='罩杯'),
                             yaxis_opts=opts.AxisOpts(name='数量'),
                             toolbox_opts=opts.ToolboxOpts())
    )
   	bar.render() # '默认在当前目录生成一个render.html,也可以自定义文件名称'

    pie = (
        Pie()
            .add("", Cup_bin_dict.items())
            .set_global_opts(title_opts=opts.TitleOpts(title="罩杯区间饼图"))
            .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}"))
    )
    pie.render() # '默认在当前目录生成一个render.html,也可以自定义文件名称'

4.后面的话

文章仅供娱乐参考,当不得真。
好了,本次的分享就先到这里,有任何问题欢迎在下方留言。
需要文中这份excel表格文档的可以在下方留下你的邮箱,我会发送过去给你。

发布了34 篇原创文章 · 获赞 210 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_45081575/article/details/103449805
今日推荐