【數據分析】系列-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表格文檔的可以在下方留下你的郵箱,我會發送過去給你。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章